如何在Linux中删除名为“?”的文件?

我创build了一个名为“?”的文件,是否有人知道如何删除它?

看起来 ? 是linux中的一个特殊字符,我使用Redhat作为我的操作系统。

我已经尝试过了

rm ? rm "?" rm \? 

他们都失败了,我得到的错误表明,该文件不存在。

找到文件的inode:

 ls -li 

然后使用inode删除文件:

 find . -inum <inode-number> -exec rm -i {} \; 

顺便说一句, rm ? 对我很好。 这里是我的bash版本:

 # bash --version GNU bash, version 4.1.5(1)-release (i486-pc-linux-gnu) 

rm \?rm "?" 都是完美的方法来删除名为? 。 如果他们不工作,你似乎还有一个文件名? ,那么最有可能的是? 被展示不是真的? ,而是用一个不可打印的字符代替的结果? 。 看看这个文件真的叫什么(用GNU ls ):

 ls --quoting-style=escape 

使用这个rm命令删除一个名为?

 rm ./\? 

或从另一个目录:

 rm /path/to/\? 

您可以通过其inode号码删除该文件。 看到输出波纹管:

 alplab:~/cad# ls -il 63051 -rw-r--r-- 1 root root 0 Nov 12 11:48 ? alplab:~/cad# find . -inum 63051 -exec rm -i {} \; 

我用“find”命令删除了inode号码为63051的文件(属于我的“?”文件的inode)。