如何重命名文件以及在不重命名文件的情况下移动文件?

如何重命名文件以及在不重命名文件的情况下移动文件?

如果文件名是The_Intel_Microprocessors_8th_Edition.pdf (DearBits),并且我正在使用mv命令重命名,则会发生以下错误:

$ mv -f The_Intel_Microprocessors_8th_Edition.pdf (DearBits)  Intel_microprocessors

bash: syntax error near unexpected token `('

如果我尝试将文件移动The_Intel_Microprocessors_8th_Edition.pdf (DearBits)到另一个目录,则会发生以下错误:

$ mv The_Intel_Microprocessors_8th_Edition.pdf /(DearBits/) /home/emertxe/Emertxe_books

bash: syntax error near unexpected token `('

答案1

()如果文件名包含空格或特殊字符,则必须用引号引起来,否则这些字符会被 shell 解释。这包括您例子中的圆括号。

通常使用单引号'',除非你需要 Bash 扩展里面的变量:

mv 'The_Intel_Microprocessors_8th_Edition.pdf (DearBits)' Intel_microprocessors

或者

mv 'The_Intel_Microprocessors_8th_Edition.pdf (DearBits)' /home/emertxe/Emertxe_books/

\引用的替代方法是在每个空格和特殊字符前面写一个反斜杠来转义所有空格和特殊字符:

mv The_Intel_Microprocessors_8th_Edition.pdf\ \(DearBits\) Intel_microprocessors

如果您在输入前几个字符后使用该键自动完成文件名,Bash 也会为您执行Tab此操作,但手动执行此操作很烦人,因为您总是必须记住需要转义哪些字符,并且可能不会忘记任何字符。

答案2

命令中不能包含mv没有反斜杠的特殊字符。正确的命令应该是:

mv -f The_Intel_Microprocessors_8th_Edition.pdf\ \(DearBits\)  Intel_microprocessors

相关内容