在Linux下面有时候会碰到文件名中含有特殊的字符,这种情况下一般的删除方式是无效的,需要加单引号、\等才能删除文件。
Linux下面文件名中的特殊字符:
在这个快速提示中,我将向您展示如何删除或复制Linux上名称包含奇怪字符的文件。
文章目录
您的默认bash shell将其中许多特殊字符(也称为元字符)视为命令。如果尝试删除或移动/复制此类文件,则可能会导致错误。在此示例中,我试图删除名为“> file”的文件:
$ rm >file
样本输出:
rm: missing operand
Try `rm --help' for more information.
需要以下命令来复制或删除名称中带有空格的文件,例如:
$ cp "my resume.doc" /secure/location/
$ rm "my resume.doc"
引号还可以防止shell解释许多特殊字符,例如:
$ rm -v ">file"
removed `>file'
双引号会保留所有包含的字符的值,但美元符号,反引号和反斜杠除外。您也可以尝试使用单引号,如下所示:
$ rm -v 'a long file name here'
$ cp 'my mp3 file.mp3' /backup/disk/
您始终可以在文件名中的特殊字符之前插入反斜杠():
$ cp "my resume.doc" /secure/location/
$ rm "*file
删除文件’-file’的语法如下:
$ rm -v ./-file
removed `./-file'
文件名开头的./强制rm不解释–作为rm命令的选项。
A —表示选项结束,并通过Shell禁用进一步的选项处理。-之后的所有参数均被视为文件名和参数。–的参数等效于–。语法为:
$ rm -v -- -file
$ rm -v -- --file
$ rm -v -- "@#$%^&file"
$ rmdir -v -- "--dirnameHere"
ls的-i选项显示每个文件的索引号(索引节点):
ls -li
如果文件的inode号为4063242,请使用以下find命令删除该文件:
$ find . -inum 4063242 -delete
要么
$ find . -inum 4063242 -exec rm -i {} ;
有关本技巧中的find,rm和bash命令的更多信息和选项,请在Linux提示符下键入以下命令以阅读手册页:
$ man find
$ man rm
$ man bash