SSH下如何删除文件名中有空格等特殊字符的文件

前段时间,遇到了个棘手的问题。一台服务器的home文件夹下有几个特殊的备份文件——这几个文件的名字里都带有空格,所以,使用传统的文件删除指令——rm 文件名,老是提示“rm: cannot remove ‘XXXXX’: No such file or directory”和“rm: cannot remove ‘XXX.tar.gz’: No such file or directory”。很明显,系统以为是要同时删除两个文件,文件名中的空格便是罪魁祸首。

为了解决这个问题,之前一直尝试先改名再删除的办法,无奈ftp无法达到home路径下,文件也无法移动到其他路径下,便妥协让他们多活几天。

好在,今天在看SHELL编程时,深受启发。里面提到反斜杠“\”可以转义空格、回车等特殊字符。无奈念念不忘那几个无赖小厮,便“抱着试试看的心态,买了两盒”,果然,腰不酸了,腿不痛了,上楼都有劲了!——终于把那几个不顺眼的文件给删除了!

就拿我今天的操作来说吧,当时要删除的文件是“xxstudio daily.gz”。执行“rm xxstudio daily.gz”便提示“rm: cannot remove ‘xxstudio’: No such file or directory”和“rm: cannot remove ‘daily.gz’: No such file or directory”。当我把空格转义,执行“rm xxstudio\ daily.gz”便可以正常删除了,会提示“rm: remove regular file `xxstudio daily.gz’? ”。这时,输入“yes”并回车便可以删除成功了!

后来,经过博主的摸索,发现使用英文双引号(“”)和英文单引号(‘’)引住文件名也可以正常删除文件名中带有特殊符号的文件。不过,各位博友还需注意$在这两种引号中的不同表达,如果有$符便使用英文单引号吧,不然,LINUX系统会因为$后面是变量名呢!

© 2014 – 2016, 李德涛博客. 版权所有.

发表评论

电子邮件地址不会被公开。 必填项已用*标注