如何使用 CURL 通过 FTP 删除最旧的文件?

如何使用 CURL 通过 FTP 删除最旧的文件?

我正在尝试编写一个脚本,该脚本将使用 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

相关内容