Как найти последний файл, соответствующий шаблону - PullRequest
0 голосов
/ 13 марта 2020

Я новичок в этом, но меня попросили написать bash скрипт для SFTP файла с одного сервера на другой. Сценарий bash будет запускаться 4 раза в день с использованием CRON, сразу после создания файла ниже. Сайт клиента создает XML файлов, содержащих заказы, 4 раза в день. Каждому файлу присваивается новое имя с добавочным номером. Например:

a_file-01.xml
b_file-01.xml
a_file-02.xml
b_file-02.xml
a_file-03.xml
b_file-03.xml

Как найти самый новый файл (который также будет иметь наибольшее число)?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Вот одна из функций, которая делает это.

latest () { 
    local file latest;
    for file in "${1:-.}"/*.xml; do
      [[ $file -nt $latest ]] && latest=$file;
    done
    printf '%s\n' "$latest"
}

Запустите его в каталоге, где находятся файлы xml.

latest

должен распечатать последний измененный файл независимо от того, числа.

0 голосов
/ 13 марта 2020

Простой подход - просто использовать ls. Вы можете заказать файлы в каталоге следующим образом: ls -t. Самый новый файл находится вверху списка. Так что это будет работать:

NEWEST=$( ls -t | head -1 )

Однако, вы можете захотеть получить результаты, чтобы избежать результатов (во избежание непреднамеренного нахождения файлов в вашем каталоге):

NEWEST=$( ls -t *file*.xml | head -1 ) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...