![如何使用 CURL 通过 FTP 删除最旧的文件?](https://linux22.com/image/22987/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20CURL%20%E9%80%9A%E8%BF%87%20FTP%20%E5%88%A0%E9%99%A4%E6%9C%80%E6%97%A7%E7%9A%84%E6%96%87%E4%BB%B6%EF%BC%9F.png)
我正在尝试编写一个脚本,该脚本将使用 CURL 通过 FTP 传输到文件服务器上的文件夹,然后计算该文件夹中的文件数。如果文件超过 5 个,请删除最旧的一个。
我知道如何使用 CURL 通过 FTP 删除文件,但是计算和获取最旧的文件名是我迷失的地方。
答案1
我不认为你可以通过卷曲来做到这一点。您需要运行curl -l
来列出目录内容、计算匹配项、按日期排序以及rm
使用curl -Q
.
如果您的系统支持保险丝(大多数情况下),我建议将远程目录安装为文件系统。这种方法可以让您将问题分成两个单独的任务:通过安装远程文件来访问它们,并像处理本地文件一样处理它们。您可以使用卷曲文件系统用于远程安装。
mkdir ftp.example.com
curlftpfs ftp.example.com ftp.example.com
cp -p /path/to/local/file ftp.example.com/remote/dir/
现在,要查找目录中最旧的文件,最简单的方法是使用 zsh 及其全局限定符。在目录中工作ftp.example.com/remote/dir/
:
files=(*(mm)) # Om = sort by date, youngest first
if ((${#files} > 5)); then
rm $files[-1] # remove the last file
# rm $files[6,-1] # remove all but the 5 youngest files
fi