Основываясь на ответе @Ryan, следующее позволит получить все «свернутые» файлы, отсортированные по алфавиту, затем получить текущий файл, распаковать их, если необходимо, и less
их:
cat <(ls mylog.log-* | sort) <(ls mylog.log) | xargs zcat -f | less
или, если вы хотите получить их все как непрерывный поток, вы можете tail
их и, при желании, передать другому процессу
cat <(ls mylog.log-* | sort | xargs zcat -f) <(tail -f -n +0 mylog.log)
Я должен отметить, что это предназначено для журналов, которые ежедневно ротируются с датой, добавленной в конец файла. Если ваши журналы используют другой формат, вам придется изменить первую часть оператора cat
, чтобы приспособиться к нему.
По умолчанию xargs
будет передавать столько параметров в одной командной строке, сколько может -обычно до предела оболочки в (IIRC )256 символов. Таким образом, используемая вами команда ls | xargs wc -l
функционально эквивалентна wc -l *
. Я полагаю, что вы ожидаете, что xargs
запустит wc
один раз для каждого файла, что можно создать, добавив параметр -n
, ls | xargs -n 1 wc -l
.