尝试通过 FTP Utime

尝试通过 FTP Utime

我通过 FTP 连接到我的服务器(这是我访问该服务器的唯一方式)。我需要通过 FTP 将命令发送到服务器。其他命令可以工作,但是当我尝试类似的命令时

site for file in *;do utime 20120101084400 ${file}; done;

要更改给定目录中的所有日期,我收到一条错误消息:用途:表格格式或者无效命令取决于我尝试的该命令的变化。

我在本地 unix 上尝试了这个命令(没有站点部分),它可以工作,但不能通过 FTP 远程工作。

我怎么做?如果有一种方法可以递归地做到这一点,那将是一个额外的好处......:)

谢谢。

答案1

允许的SITE命令因所使用的 FTP 守护程序而异(例如,SITE CHMODvsftpd;还有一些在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 库

相关内容