2010-09-23 3 views
0

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

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

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

ответ

1

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

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

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

# 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>' 
+0

Это помогает немного, но мне действительно нужно что-то, что держит просмотр последнего измененного файла и переключается с одного файла на другой. –

+0

@ Джейсон, ладно, ладно. Обновленный ответ. –

+0

OK спасибо. Я попробую. Это окна, поэтому мне нужно захватить gnu unxutils, но это выглядит достаточно просто. –

 Смежные вопросы

  • Нет связанных вопросов^_^