Перечислить временные файлы по числовому значению, имеющему номер больше, чем данное постоянно меняющееся имя файла

Вы, вероятно, используете файл в стиле Windows и скопируете его на свой NAS. Вы должны преобразовать его в стиль Unix. Ссылка в Википедии на более подробное объяснение . Некоторые редакторы имеют возможность сохранять файл в других форматах. Если ваш редактор не может этого сделать, вы, вероятно, можете использовать утилиту dos2unix , доступную для большинства дистрибутивов Linux.

Если все вышеперечисленные варианты не помогают, этот Stackoverflow , вероятно, может вам помочь.

2
27.08.2015, 02:58
1 ответ

Отклоняясь от наблюдения Жиля о том, что ваши имена файлов сортируются лексически, вы могли бы использовать zshдля создания файла фильтра для rsync:

cut_log=A0000096.LOG zsh -c 'logfilter() { ! [[ "$REPLY" < "$cut_log" ]] }; print -l A*.LOG(+logfilter)' >.exclude_file
rsync A* --exclude-from=.exclude_file user@remoteHost:/somedir/
rm.exclude_file

Конечно, вы можете сделать все это изначально в zsh, но я показываю, как расширить ваш сценарий bash с помощью полезной функции zsh. Эта функция называется "Glob Qualifier" и описана в разделах eStringи +cmd. Он запрашивает расширение A*.LOG, отфильтрованное путем прохождения каждого кандидата через заданную функцию. Параметр функции называется REPLY, поэтому мы сравниваем его лексически со значением $cut_log, чтобы определить включение или исключение в результирующий список.

Вышеприведенное предполагает, что код выполняется в каталоге, содержащем файлы журналов, так что rsyncнаходит их, и чтобы zshнаходил их.

Это позволяет легко провести сухой -прогон, проверив .exclude_fileперед выполнением команды rsync.

Если вы обнаружите, что слишком много файлов для , включите в команду -строку (так, что команда завершится ошибкой из-за слишком большого количества аргументов ), но их недостаточно исключить файлы, вы можете инвертировать логику и указать rsyncна --include-fromфайл, а затем переключить логику logfilterдля удаления инверсии(!).

0
27.01.2020, 22:20

Теги

Похожие вопросы