我正在尝试重命名一堆包含空格的文件,摆脱空格.我以为我找到了正确的bash命令:
for f in *.txt; do mv \"$f\" ${f/ /}; done
Run Code Online (Sandbox Code Playgroud)
但是,这会为每个文件提供错误"mv:target不是目录".如果我在命令中用'echo mv'替换'mv',它会为每个文件打印正确的mv命令,如果我单独键入任何这些mv命令,它们就可以工作.例如,如果我有2个文件,"a .txt"和"b .txt",并运行上面的命令,我得到:
mv: target 'a.txt' is not a directory
mv: target 'b.txt' is not a directory
Run Code Online (Sandbox Code Playgroud)
如果我输入命令:
for f in *.txt; do echo mv \"$f\" ${f/ /}; done
Run Code Online (Sandbox Code Playgroud)
我明白了:
mv "a .txt" a.txt
mv "b .txt" b.txt
Run Code Online (Sandbox Code Playgroud)
我找到了另一种方法,使用"重命名",但我想知道为什么这不起作用.