Intereting Posts
Как шифровать (защищать паролем) PDF без шифрования метаданных? Разбор строки по awk и получить только элементы без труб или полуколонок Отсутствуют символы юникода Как получить сетевую маску от bash? Существует ли стандартная аббревиатура для 'find. -name foo 'или мне нужна функция для этого? Как вы можете изменить идентификатор, который отображается как ident@hostname.com на ircll? Почему одновременное использование нескольких областей подкачки, а не последовательно, в соответствии с приоритетом? Установка armhf libboost-python-dev в среде amd64 cross environ После git, папок и файлов Fedora, установка телефона Android? Зачем переходить на кошку только для перенаправления? Какой драйвер обрабатывает мой тачпад? Как подготовить новые диски для использования в программном рейде? Ошибка конфигурации debian network wpa_supplicant Эффективный поиск уникальных владельцев файлов и каталогов

Как открыть последний файл из списка файлов в определенном каталоге в 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] выбирает первое.