如何找到与模式匹配的最新文件

问题描述 投票:0回答:2

我是新手,但有人要求我编写bash脚本,以将SFTP文件从一台服务器传输到另一台服务器。创建以下文件后,bash脚本每天将使用CRON运行4次。客户的网站创建的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

我如何找到最新文件(数量也最多)?

bash cron
2个回答
0
投票

一种简单的方法是只使用ls。您可以通过以下方式在目录中订购文件:ls -t。最新文件在列表顶部。这样就可以了:

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

但是,您可能希望遍历以获得结果(以避免目录中无意的文件):

NEWEST=$( ls -t *file*.xml | head -1 ) 

0
投票

这是执行此操作的功能。

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

在xml文件所在的目录中运行。

latest

无论数量多少,都应打印出最新的修改文件。

© www.soinside.com 2019 - 2024. All rights reserved.