Как просмотреть несколько файлов журнала как один файл в unix/linux

Законченное выполнение reverese чтения файла и считания в обратном порядке значение даты. Дата получает decemented каждый раз, когда предыдущий раз строк больше, чем текущая строка.

Это не оптимальное решение, поскольку существует несколько ошибок, но это подходит в моих целях

3
задан 10 May 2010 в 13:04
2 ответа

Можно использовать списки файлов и файла globbing для определения нескольких файлов.

Один большой файл:

cat file1 file2 anotherbunch* log[a-z] | less

Последовательность файлов (тип: n для движения в следующий):

less -e file1 file2 anotherbunch* log[a-z]

-e переключатели в следующий файл автоматически, когда конец текущего файла достигнут (дважды) и выходит, когда конец последнего файла достигнут (дважды). Чтобы сделать это на первом разе, EOF достигнут, используйте -E опция.

4
ответ дан 3 December 2019 в 05:19
  • 1
    эй Спасибо! Это работает, но проблема, которую я имею, состоит в том, что это заказывает файлы в алфавитном порядке вместо численно. Например, журнал 1 списка, журнал 2, журнал 10 отсортирован как журнал 1, журнал 10, журнал 2 и не как журнал 1, журнал 2, журнал 10. Есть ли какой-либо прием для этого?! –  Kostas 10 May 2010 в 13:25
  • 2
    @Kostas: Если нет никаких пробелов, и т.д., в именах файлов, Вы могли бы сделать что-то как find . -maxdepth 1 -name "log.*" | sort -V | less для " один большой file" или для последовательности файлов: less $(find . -maxdepth 1 -name "log.*" | sort -V). –  Paused until further notice. 10 May 2010 в 13:39
  • 3
    Кажется что "-V" параметр не доступен на моей машине. Вот доступные варианты:-b-d-f-g-i-M-n-r-c-k-m-o-s-S-t-T-u-z. –  Kostas 10 May 2010 в 13:57
  • 4
    Это - то, что я придумал: меньше-M-e allocation-engine.log allocation-engine.log.? allocation-engine.log.??. Не лучшее решение, но это будет работать на большинство случаев! Еще раз спасибо! –  Kostas 10 May 2010 в 14:06
  • 5
    @Kostas: Это могло бы работать для сортировки файлов численно начиная с Вашего sort doesn' t имеют --version-sort (-V): find -maxdepth 1 -type f -name "allocation-engine.log*" | while read -r file; do num="${file##*.}"; if [[ $num == ${file#*.} ]]; then num=''; fi; printf "%03d %s\n" "$num" "$file"; done | sort | cut -d ' ' -f2 –  Paused until further notice. 10 May 2010 в 16:40
3
ответ дан 3 December 2019 в 05:19

Теги

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