инструменты программирования: «меньше», который знает, как посмотреть самый последний измененный файл в каталоге - PullRequest
0 голосов
/ 23 сентября 2010

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

Есть ли какая-либо утилита, такая как "less", которую я могуиспользовать для отображения последних N строк файла, который был изменен за последнее время?

edit: для меня самое большое значение, если у меня есть что-то, что автоматически перейдет из одного файла в следующийтак что мне не нужно вручную останавливать «меньше» и перезапускать его.(если я сделаю это, я мог бы также сам ввести имя файла)

1 Ответ

1 голос
/ 23 сентября 2010

Нет ни одной команды, чтобы сделать это, но объединение в пару нескольких простых команд может привести нас туда. Это даст вам последний измененный файл:

# Sort by modified time, display the first file.
ls -t <dir> | head -1

Вы можете передать это имя файла less, чтобы просмотреть его в интерактивном режиме, или хвост, если хотите увидеть только несколько последних строк. tail -n <N> отображает последние N строк файла. Вот два эквивалентных способа получить это имя файла в tail:

# Use xargs to pass file name as argument to tail.
ls -t <dir> | head -1 | xargs tail -n <N>

# Use $(...) to do the same as above.
tail -n <N> "$(ls -t <dir> | head -1)"

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

# Repeat the above tail command every 5 seconds.
watch -n 5 'ls -t <dir> | head -1 | xargs tail -n <N>'
...