Intereting Posts
псевдоним zsh с линией, запятыми и кавычками gksudo не выполняет настройку в / etc / sudoers EUI64 и ipv6: как использовать собственный EUI64 для автоконфигурации IPv6 Avconv Ошибка при попытке сохранить моментальный снимок обновления потока IP-камеры Когда переменные окружения устанавливаются в tcsh? Как начать обработку файла, который еще не создан VPN-клиенты, не достигшие Интернета Преобразование всех первых символов в идентификатор электронной почты в верхний регистр в BASH Создайте список каждого пользователя, которому принадлежит файл в заданном каталоге, а также количество файлов и каталогов, которыми они владеют. Отключить звук, но сделать его захваченным для записи на экране в linux Условная установка файлов и каталогов в пакетах Debian Как открыть все URL-адреса в моем браузере с помощью xdg-open? Как извлечь конкретный текст из файла журнала с помощью linux-терминала? Вложенные монтируемые nfs отказываются на стороне клиента конвертировать временную метку в форматированное время OSX

Как открыть последний файл из списка файлов в определенном каталоге в AIX

Как открыть последний файл из списка файлов в определенном каталоге? То же имя файла расположено по дате с последним в последнем.

В настоящее время я использую следующие команды:

ls -lrt filename* tail -f filename 

Если ваша shell представляет собой оболочку типа Bourne, и ее [ встроенный модуль реализует тест -nt для проверки того, является ли один файл более новым, чем другой, вы можете использовать

 newest= for file in ./* ./.*; do if [ -f "$file" ]; then if [ -z "$newest" ] || [ "$file" -nt "$newest" ]; then newest=$file fi fi done if [ -f "$newest" ]; then printf 'The latest file is "%s"\n' "$newest" else echo 'Could not find files here' >&2 exit 1 fi 

Это будет перебирать все обычные (и символические ссылки на обычные) файлы (включая скрытые) в текущем каталоге, а затем сообщать вам, какой из них был найден самым новым файлом. Вы бы заменили оператор printf фактической командой, которую вы хотите запустить на "$newest" .

В качестве функции оболочки, которая дополнительно принимает список файлов в качестве аргумента:

 newest () ( newest= for file do if [ -f "$file" ]; then if [ -z "$newest" ] || [ "$file" -nt "$newest" ]; then newest=$file fi fi done if [ -f "$newest" ]; then printf '%s\n' "$newest" else echo 'No files found' >&2 return 1 fi ) 

затем

 tail -f "$(newest ./filename*)" 

Вы можете использовать GNU find , чтобы распечатать все файлы с их последним измененным временем, sort их в обратном порядке, получить последний измененный файл ( head -n 1 – top top) и затем сделать хвост последнего измененного файла

  find  -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r | head -n 1 | awk '{print $3}' | xargs tail -f 

Если zsh установлен, вы можете сделать в нем:

 tail -f имя файла Ctrl + x m

Ctrl + x m – это завершитель, который расширяется до последнего файла (в соответствии с последним временем изменения ).

В скрипте:

 #! /usr/bin/env zsh tail -f filename*(om[1]) 

Где om сортирует по времени изменения (самое последнее сначала), а [1] выбирает первое.