Tail -f последний измененный файл в папке

Я пытаюсь использовать tail -f проследить за входом в файл в указанной папке. Я могу сделать это с помощью простой команды tail -f [path to file] но есть ли способ, которым я могу иметь команду, которая запускает и отслеживает самый последний / последний измененный файл в папке. Не специалист в этой области, поэтому любая помощь очень ценится

2 ответа

Решение

Вы могли бы запустить ls -tp | sort | grep -v / | tail -n 1 команды и поставить их через for цикл затем запустить только tail -F Команда против самого нового файла, чтобы следить за изменениями содержимого. Вы также можете рассмотреть ls -tpr | grep -v / | tail -n 1 команды вместо.

for VAR in $(ls -tp | sort | grep -v / | tail -n 1); do tail -F $VAR; done

или же

for VAR in $(ls -tpr | grep -v / | tail -n 1); do tail -F $VAR; done

Дополнительные ресурсы

  • ls

       -t     sort by modification time, newest first
    
       -p, --indicator-style=slash
              append / indicator to directories
    
       -r, --reverse
              reverse order while sorting
    
  • sort

  • grep

    -v, --invert-match
    Invert the sense of matching, to select non-matching lines. (-v is specified by POSIX .)
    
  • tail

      -n, --lines=[+]NUM
              output the last NUM lines, instead of the last 10; or use -n
              +NUM to output starting with line NUM
    

Вы можете использовать MultiTail, доступный как стандартный пакет во многих дистрибутивах.

Пример 1: объединить два файла журнала в одном окне с разными цветами

multitail -ci green /var/log/yum.log -ci yellow -I /var/log/mysqld.log

Пример 2: Показать пять лог-файлов, объединяя два в один столбец

 multitail -s 2 -sn 1,3  /var/log/mysqld.log -I /var/log/xferlog /var/log/monitorix /var/log/ajenti.log /var/log/yum.log

Источник: MultiTail - одновременный мониторинг нескольких файлов в одном терминале Linux.

Другие вопросы по тегам