我用空格命名了一些文件,我想用_. 但是,每次我在 shell 中使用文件名(例如Spring 2011)编写命令时,shell 都无法识别该文件或目录。
我该怎么办?有什么办法可以将 unicode 字符用于空格吗?
Raf*_*ler 38
转义空格,例如Spring\ 2011,或使用引号,例如'Spring 2011'。将来,在任何 *NIX 上使用包含空格的文件名通常是一个坏主意。
如果你有rename,你可以使用这个:
rename ' ' '_' [filenames...]
Run Code Online (Sandbox Code Playgroud)
unu*_*tbu 35
如果您的机器有重命名命令,那么这会将当前工作目录中所有文件/目录中的所有空格更改为下划线:
rename 's/ /_/g' *
Run Code Online (Sandbox Code Playgroud)
bla*_*lah 30
如果您没有rename或更喜欢仅使用 shell:
for f in *\ *; do mv "$f" "${f// /_}"; done
Run Code Online (Sandbox Code Playgroud)
分解:
*\ *选择名称中带有空格的所有文件作为for循环的输入。该模式*X*选择X名称中包含的所有文件,对于特殊字符空间,我们必须用斜杠对其进行转义,以便 bash 不会将其视为分隔不同的参数。"$f"很重要,因为我们知道文件名中有一个空格,否则它会显示为mv.${f//str/new_str}是 bash 特定的字符串替换功能。的所有实例str都替换为new_str。