Живой хвост из разных папок с включением и исключением файлов

Ответ, как правило, "нет", просто потому, что -по общему правилу -в файле нет фактического символа, который окончательно отмечает конец файла.

Возможно, вам стоит попробовать другой подход, например один из предложенных здесь:https://stackoverflow.com/questions/10984432/how-to-read-the-file-content-into-a-variable-in-one-go. Использование:

IFS="" contents=$(

особенно элегантен; это заставляет Bash считывать содержимое fileв переменную contents, за исключением байтов NULL -, которые переменные Bash -не могут хранить (из-за внутреннего использования стиля C -., NULL -строки с завершением байта ). IFS=""устанавливает внутренний разделитель полей пустым, чтобы отключить разделение слов (и, следовательно, избежать удаления новых строк ).

Примечание :Так как (из-за отсутствия очков репутации )я не могу комментировать ответ, предполагающий использование readс опцией -N, отмечу здесь, что этот ответ -по определению -не гарантирует работу в том виде, в каком он есть, поскольку размер файла заранее неизвестен.

1
17.03.2021, 10:02
2 ответа

Используйте мой ответ на ваш не -тот -другой вопрос по SU , чтобы создать три findкоманды, которые найдут нужные вам файлы. Тогда:

{ find … -print0 ; find … -print0 ; find … -print0 ; } | xargs -r -0 tail -F

Примечания:

  • -Fиз-за этого:Как сделать tail -fротацию файлов журналов?
  • findкоманды выполняются только один раз. Если появится новый файл, имя которого было бы найдено, но в то время не существовало, то tailпроигнорирует его. Другими словами, :, когда tailзапускается, все его аргументы фиксируются, файл с -по -не входит в их число.
  • Если результаты формы finds превышают предел , тогда xargбудет выполняться более одногоtail(по умолчанию не параллельно, хотя ). Конечно, вы не хотите этого. Надеемся, что ваши findнайдут разумное количество файлов, и ограничение не будет превышено.
  • find -print0и xargs -r -0не переносимы. Вы отметили ; в Ubuntu они будут работать.
1
18.03.2021, 22:24

Конец всех нужных файлов... вывод каждого хвоста в файл... хвост нового файла.

хвост -f /var/log/large.log > ~/full.log && tail -f /var/log/medium.log > ~/full.log && tail -] f ~/full.log

вы можете запустить его как одну команду, но поначалу это выглядит немного странно... но вы можете запустить его в другом tty, если хотите, и просто закрепить полный журнал там, где вы хотите, чтобы он выглядел хорошо.

0
18.03.2021, 22:24

Теги

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