删除名为“ -d”的文件


18

可能的重复项:
如何从bash中删除名为“ -p”的文件?
如何在Linux上删除具有此名称的文件:-] ??????? q
我需要使用什么命令来删除名为`-rf`的文件?

我不小心创建了一个名为:-d的文件

我尝试使用单引号和双引号以及通配符将其删除,但是每次“ rm”给我这个错误:

警告:--directory(-d)选项未记录且无操作。使用-rf删除非空目录rm:缺少操作数尝试使用rm --help获取更多信息。

我如何摆脱文件?

Answers:




8

在这种情况下,使用“-”是最简单的方法。但是,如果偶然发现带有无法打印的控制字符的文件,则更通用的解决方案是通过inode引用该文件:

% ls -ali aFileWithFunnyCharacters
      9215 -rw-r-----   1 chris  chris         0 Sep  8 16:55 aFileWithFunnyCharacters
% find . -xdev -inum 9215 -exec rm {} \;
% ls -ali aFileWithFunnyCharacters
aFileWithFunnyCharacters: No such file or directory

0

Gnu-find具有-delete选项:

find -name "-d" -delete

否则你可以尝试

find -name "-d" -exec rm {} ";" 

但是从上面的解决方案更短,并且使用getopt库在许多程序中使用了用-停止标志解释的方法,因此学习它通常是有用的。

但是查找/删除对于学习也是非常有用的。请注意,这两个示例都将递归删除名称为“ -d”的文件,这种情况可能不会经常发生,但是如果碰巧有一个名为“ -d”的文件,则可能会有更多文件。:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.