我是新手,但有人要求我编写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
我如何找到最新文件(数量也最多)?
一种简单的方法是只使用ls
。您可以通过以下方式在目录中订购文件:ls -t
。最新文件在列表顶部。这样就可以了:
NEWEST=$( ls -t | head -1 )
但是,您可能希望遍历以获得结果(以避免目录中无意的文件):
NEWEST=$( ls -t *file*.xml | head -1 )
这是执行此操作的功能。
latest () {
local file latest;
for file in "${1:-.}"/*.xml; do
[[ $file -nt $latest ]] && latest=$file;
done
printf '%s\n' "$latest"
}
在xml文件所在的目录中运行。
latest
无论数量多少,都应打印出最新的修改文件。