如何使用cURL按最后添加时间排序列出FTP远程文件?
解决cURL按指定顺序列出FTP文件的问题
问题原因
你之前的命令格式错误:curl ls -ltc -u login:pass ... 中,ls -ltc 会被cURL误认为是要下载的文件名,而非传递给FTP服务器的排序指令,所以只会返回默认的字母排序结果。
解决方案
有两种可行方式,根据FTP服务器的支持情况选择:
1. 向FTP服务器发送带排序参数的LIST命令
cURL允许通过 -Q 选项向FTP服务器发送自定义命令,直接让服务器返回已排序的列表。使用以下命令:
curl -u login:pass -Q "LIST -ltc" ftp://ip:port/path/to/file/
-Q "LIST -ltc":告诉FTP服务器执行带-ltc参数的LIST命令(-l长格式、-t按时间排序、-c按创建时间而非修改时间,具体参数支持取决于服务器端的FTP软件)。- 若要按从旧到新排序,部分服务器可能需要调整参数为
-ltrc(-r反向排序),可根据实际输出测试调整。
2. 本地对cURL输出进行排序
如果FTP服务器不支持LIST带参数,可先获取原始列表,再用本地工具排序。cURL默认输出的FTP列表格式与 ls -l 类似,可通过 sort 命令按时间列排序:
curl -u login:pass ftp://ip:port/path/to/file/ | sort -k 6,7
-k 6,7:指定按第6、7列(日期和时间字段)排序,默认升序即为从旧到新;若要反向则加-r参数(sort -r -k 6,7)。
内容的提问来源于stack exchange,提问作者supernoob
相关产品推荐
相关产品推荐

