【发布时间】:2013-11-24 05:02:32
【问题描述】:
我创建了一个名为“?”的文件,有人知道如何删除它吗?
好像是这样?是 linux 中的一个特殊字符,我使用 Redhat 作为我的操作系统。
我已经试过了
rm ?
rm "?"
rm \?
他们都失败了,我得到的错误是文件不存在。
【问题讨论】:
我创建了一个名为“?”的文件,有人知道如何删除它吗?
好像是这样?是 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 ? 时,我猜它会删除目录中包含单个字符的所有文件。试试touch ?、touch a 和rm ?。它将同时删除 ? 和 a
BTW, rm ? works for me fine. -- 这可能是因为那是您目录中唯一包含单个字符的文件。
?实际上是其他字符。
rm \? 和rm "?" 都是删除名为? 的文件的好方法。如果它们不起作用,并且您似乎仍然有一个文件名 ?,那么显示的 ? 很可能不是真正的 ?,而是用不可打印字符替换的结果?。要查看文件的真正名称(使用 GNU ls),请尝试:
ls --quoting-style=escape
【讨论】:
使用此rm 命令删除名为? 的文件:
rm ./\?
或从另一个目录:
rm /path/to/\?
【讨论】:
?,那么这个命令应该可以工作。我在 OSX 和 Linux 主机上测试后发布了它。
rm ./?
4.4.19(1)-release
您可以通过 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)。
【讨论】:
rm -i 对我不起作用,但您可以简化 find 命令并使用它来删除:find . -inum 1234 -delete