我有一组文件存放在我的FTP文件夹中,我只能以FTP模式访问。我想将这些扩展名为.txt的文件重命名为.done。
例如:
1.txt, 2.txt, 3.txt
to
1.done, 2.done, 3.done
在这个FTP中,只有重命名命令是有效的。我期望有类似于
rename *.txt *.done
使用单个命令重命名它们。
大家好,
虽然这个问题很旧了,但我认为我的建议对其他人来说可能会有用。
我发现一个非常好的、简单的解决方案,它结合了 curlftpfs,这是一个基于 cURL 和 FUSE 的 FTP 文件系统,以及 rename,这是一个 Linux 和 Unix 多重命名工具。
我在 Linux Mint 17 上进行了测试(我认为它应该适用于其他基于 Debian 的发行版)。
安装curlftpfs
sudo apt-get install curlftpfs
创建挂载文件夹
sudo mkdir /mnt/ftp_remote_root
将远程ftp挂载到文件夹上
sudo curlftpfs -o allow_other -o user="USERWITH@CHARACTERTOO:PASSWORDTOACCESSUSER" ftp://my_ftp_server.com /mnt/ftp_remote_root/
跳转到所需的ftp远程文件夹
cd /mnt/ftp_remote_root/path/to/folder
根据需要重命名文件(-v显示新名称,-n显示感兴趣的文件,省略它们以重命名文件)
sudo rename -v -n 's/match.regexp/replace.regexp/' *.file.to.change
由于它在网络上运行,可能需要几秒钟的时间。
我认为这真的很强大且易于使用。
如果您发现任何问题,请告诉我。
再见
Lorenzo
尝试像这样做:
for f in $(lftp -u 'username,password' -e 'set ssl:verify-certificate no; ls /TEST/src/*.csv; quit' ftp.acme.com| awk '{print $9;}'); do lftp -u 'username,password' -e "set ssl:verify-certificate no; mv /TEST/src/$f /TEST/dst/$f; quit" ftp.acme.com; done
注意:使用 .netrc 存储用户名和密码。