【发布时间】:2014-12-18 14:27:23
【问题描述】:
我正在尝试重命名一堆包含空格的文件,以消除空格。我以为我找到了正确的 bash 命令:
for f in *.txt; do mv \"$f\" ${f/ /}; done
但是,这会为每个文件提供错误“mv:目标不是目录”。如果我在命令中将 'mv' 替换为 'echo mv',它会为每个文件打印正确的 mv 命令,如果我单独键入这些 mv 命令中的任何一个,它们就会起作用。例如,如果我有 2 个文件,“a .txt”和“b .txt”,并运行上面的命令,我得到:
mv: target 'a.txt' is not a directory
mv: target 'b.txt' is not a directory
如果我输入命令:
for f in *.txt; do echo mv \"$f\" ${f/ /}; done
我明白了:
mv "a .txt" a.txt
mv "b .txt" b.txt
我找到了另一种方法,使用“重命名”,但我想知道为什么这不起作用。
【问题讨论】:
-
我想知道您如何在 .txt 之前放置空格,因为它不会接受。它会认为 .txt 不是目录
标签: bash loops for-loop rename mv