如果您在 UNIX/Linux 上使用特殊字符(例如 )创建文件touch \"la*,则无法使用rm "la*. 您必须使用 inode 编号(\我知道,如果您在名称前添加 ,则可以,但您必须以用户身份猜测它在文件创建中使用过)。
我检查了 rm 的联机帮助页,但没有提到 inode 编号。做rm inodenumber也不行。
这是什么命令?
Joh*_*n T 25
其他一些方法包括:
转义特殊字符:
[~]$rm \"la\*
使用 find 命令并只搜索当前目录。find 命令可以搜索 inode 编号,并且有一个方便的-delete开关:
[~]$ls -i 7404301“拉* [~]$查找。-maxdepth 1 -type f -inum 7404301 ./"拉* [~]$查找。-maxdepth 1 -type f -inum 7404301 -delete [~]$ls -i [~]$
小智 6
我总是用这个:
# retrieve the inode number
sav@ubuntu:~$ ls -il
total 8
415984 -rw-rw-r-- 1 sav sav 0 Apr 11 10:07 '"la*'
417981 drwxrwxr-x 2 sav sav 4096 Apr 11 09:44 ]rf
415985 -rw-rw-r-- 1 sav sav 11 Apr 8 16:24 text
# use find/delete
find . -inum 415984 -delete
Run Code Online (Sandbox Code Playgroud)
也许我错过了一些东西,但是......
rm '"la*'
Run Code Online (Sandbox Code Playgroud)
无论如何,文件名没有inode,文件有。尝试删除文件而不删除指向它的所有文件名会损坏您的文件系统。
小智 5
如果您真的想这样做 - 而您的用例看起来根本不需要,您可以尝试文件系统调试工具。如果你愿意失去一切,那就是。
例如,对于 ext2/3/4,该debugfs命令有一个“kill_file”选项,它似乎采用了一个 inode。正如其他回复中提到的,这会损坏您的文件系统,因为会有目录条目指向不存在的文件。fsck之后运行可能能够修复此问题。您不太可能在已挂载的文件系统上执行此操作。
但是我强烈建议您只使用适当的转义/引用rm并使用前面的回复中提到的常规命令删除此类文件- 并rm -i在处理包含诸如 * 之类的通配符的文件名时使用以提高安全性
| 归档时间: |
|
| 查看次数: |
33938 次 |
| 最近记录: |