在 Linux 中难以删除文件

mgj*_*gjk 6 bash find rm

互联网上有很多关于此的内容,但大多数示例都是人为的。如何删除真正顽固的文件?例如,

$ find ./ -inum 167794
./àKÈÿÿÿÿ@
$ find ./ -inum 167794 -exec rm \"{}\" \;
rm: cannot lstat `"./\037\340\025K\021\004\310\377\377\377\377@\020\002"': Invalid or incomplete multibyte or wide character
Run Code Online (Sandbox Code Playgroud)

gle*_*man 8

尝试删除转义的双引号。我相信 rm 认为这些是文件名的一部分。

find ./ -inum 167794 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

  • 它是安全的。您引用参数以保护它们不被外壳触及。在这种情况下, find 直接将参数传递给 rm 并且它们不会被 shell 解释/扩展。 (3认同)

小智 6

使用现代查找的更好方法(版本 4.2.3 或更高版本):

find ./ -inum 167794 -delete
Run Code Online (Sandbox Code Playgroud)