У меня есть программа, которая записывает свой вывод в файл * .out при запуске. Я установил скрипт bash для запуска нескольких разных времен, поэтому каждый запуск записывает в другой файл * .out. Я обнаружил, что я мог бы tail
самый последний * .OUT файл, как это:Хвост последнего файла
watch tail $(ls -tr *.out | tail -n1)
Проблема, кажется, что ссылки $()
только получает выполняется один раз. Поэтому, когда первый запуск заканчивается, watch
продолжает tail
тот же * .out файл, хотя теперь есть новый * .out файл.
Как я могу изменить это, чтобы перейти к следующему * .out файлу после завершения одного запуска?
Я попытался сделать некоторые вложения кавычек и круглых скобок, но я не совсем понимаю детали ссылок. Вопросы осложняются тем фактом, что watch
передает свою команду sh
, хотя я использую bash.
Бонусные баллы: было бы здорово, если бы это можно было изменить до tail -f
вместо того, чтобы просто повторять watch
каждые n
секунд.
hm..I действительно не понимаю, кейс для использования. Вы хотите прочитать несколько файлов в режиме реального времени? если да, проще использовать 'tail -f * .out' – pivanchy
Как правило, я согласен с @pivanchy, хотя стоит упомянуть, что POSIX' tail' не может обрабатывать более одного файла за раз. – kojiro
@pivanchy - это решение. Я не понимал, что все так просто. –