2015-02-20 1 views
0

В настоящее время я пишу скрипт ksh, который будет запускаться каждые 5 минут. Я хочу, чтобы выберите два последних добавленных файла в каталоге, которые имеют определенный формат. Формат файла должен быть: OUS_*_*_*.html. Затем файлы должны быть скопированы в целевой каталог.Найдите и скопируйте два последних файла, добавленных в каталог с определенным форматом

Я предполагаю, что могу использовать find, но я использую HP-UX, и он не поддерживает параметры -amin, -cmin, -mmin. Кто-нибудь знает, как я могу достичь этой функциональности?

Edit 1: Я нашел следующие команды, каждая из которых, как предполагается, возвращает единственный новейший файл, но при использовании более чем один файл в списке:

ls -Art | tail -n 1 
ls -t | head -n1 

Edit 2: Я вижу, как функциональность этих команд должна работать, но ls -t перечисляет файлы в формате таблицы, а выбор первой строки фактически выбирает три отдельных имени файла. Я пытался использовать ls -lt, но теперь первая строка является строкой total 112 следуют имена файлов вместе с их правами доступа, штамп времени и т.п ..

Редактировать 3: Я обнаружил, что -1 (цифра 1, а не l) предоставляет список с именами файлов. Используя команду ls -1t | head -n 2, я смог получить возможность перечислить два новых файла.

Вопрос: Возможно ли ограничить команду ls, чтобы просто искать файлы с указанным ранее форматом?

+1

Даже в самом худшем случае, с помощью 'Ls -t | голова -2' приходит в голову. Наверняка это доступно на HP-UX? –

+0

Спасибо за быстрый ответ. Эти команды доступны, однако при запуске команд в тестовом каталоге перечислены 6 из 8 файлов. @JosephMyers –

+0

@JosephMyers Вы могли бы расширить свою команду, чтобы перечислить и скопировать два последних файла, которые соответствуют конкретному формату? –

ответ

0

Я был в состоянии использовать этот блок кода в список наиболее недавно добавленные файлы в каталог, которые соответствуют определенному формату:

ls -1t $fileNameFormat | head -n 2