【发布时间】:2018-03-11 01:51:18
【问题描述】:
我正在尝试遍历目录中的所有文件,并使用以下命令将它们从前缀 ABC 重命名为 XYZ
while read file; do mv \"$file\" \"$(echo $file | sed -e s/ABC/XYZ/g)\" ; done < <(ls -1)
当我在mv 前面抛出一个回显时,一切看起来都应该可以正常工作,并且复制/粘贴输出的命令也可以正常工作,但它不会在循环上下文中正确执行,给我一个使用错误好像命令格式错误,如下所示。
usage: mv [-f | -i | -n] [-v] source target
mv [-f | -i | -n] [-v] source ... directory
即使使用 echo 检查输出的命令给出了
mv "ABC Test1" "XYZ Test1"
如果我复制粘贴,这应该是一个有效的命令并且可以工作。
知道发生了什么吗?
【问题讨论】:
-
我在这里使用
while read file; do mv $file $(echo $file | sed -e s/ABC/XYZ/g) ; done < <(ls -1)进行了测试,它成功了...您收到的信息是什么? -
见下文。转义的引号产生了正确的回声输出,但在 mv 中没有预期的功能。删除转义符解决了这个问题。