我通过 FTP 连接到我的服务器(这是我访问该服务器的唯一方式)。我需要通过 FTP 将命令发送到服务器。其他命令可以工作,但是当我尝试类似的命令时
site for file in *;do utime 20120101084400 ${file}; done;
要更改给定目录中的所有日期,我收到一条错误消息:用途:表格格式或者无效命令取决于我尝试的该命令的变化。
我在本地 unix 上尝试了这个命令(没有站点部分),它可以工作,但不能通过 FTP 远程工作。
我怎么做?如果有一种方法可以递归地做到这一点,那将是一个额外的好处......:)
谢谢。
答案1
允许的SITE
命令因所使用的 FTP 守护程序而异(例如,SITE CHMOD
在vsftpd
;还有一些在Apache 的 Ftp 服务器)。一般来说,它是不是远程 shell 设施你似乎期待着。然而,ProFTPd 显然支持SITE UTIME
。
因此,如果您的 FTPd 有问题,SITE UTIME
您可以尝试SITE UTIME
客户端循环,像这样(伪代码,没有提到服务器,还要记住可能有空格(需要引用);您还需要一个多功能的 FTP 客户端(lftp
可能是一个不错的候选人)):
for file in $(./ftp-get-directory-list)
do ftp-client -c "SITE UTIME ${file}"
done
编辑另见吉尔斯在这里给出了很好的回答关于 Bash 脚本和lftp
.
附录如果您喜欢某种脚本语言(例如Python),您也可以通过以下方式帮自己一个忙使用一些 FTP 库。