bash - 如何通过 SSH 重命名所有文件

标签 bash ssh sftp batch-rename

我正在尝试通过 SSH 或 SFTP 重命名远程目录中的所有文件。重命名应将文件转换为日期扩展名,例如将 .txt 转换为 .txt.2016-05-25。

我有以下命令循环每个 .txt 文件并尝试重命名,但出现错误:

ssh $user@$server "for FILENAME in $srcFolder/*.txt; do mv $FILENAME $FILENAME.$DATE; done"

我得到的错误是:

mv: missing destination file operand after `.20160525_1336'

我也曾通过 SFTP 尝试过此操作,但没有这样的运气。任何帮助将不胜感激!

最佳答案

您需要转义(或单引号)远程 shell 中变量的 $。还建议引用代表文件路径的变量:

ssh $user@$server "for FILENAME in '$srcFolder'/*.txt; do mv \"\$FILENAME\" \"\$FILENAME.$DATE\"; done"

关于bash - 如何通过 SSH 重命名所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37444322/

相关文章:

打印人类可读的 $PATH 输出的 Bash 命令在 OS X 上不作为 .bash_profile 中的别名工作

bash - sed 错误提示 "extra characters after command"

ant - 输入 sshexec 的密码

ruby-on-rails - 使用私钥和公钥的 API 身份验证

sftp - 使用SFTP命令的代理详细信息

Python将SFTP服务器上的文件移动到另一个文件夹

php - 为 Apache 而不是 CLI 启用 PHP 扩展

linux - 安排一个文件的行与第二个文件的行相同

java - 如何使用 JSch 在 SFTP 服务器上复制文件?

macos - 通过 OSX ssh rsync 保留别名