通过我的愚蠢操作,我不小心创建了一个名为(例如)-A 的目录,并最终用文件填充它。
我想删除所说的目录。我试过了:
rmdir -- -A
但它随后告诉我该目录中仍有文件。而且我不知道如何 cd 进入目录以删除所述文件。
我应该怎么做才能摆脱这个麻烦的目录?
通过我的愚蠢操作,我不小心创建了一个名为(例如)-A 的目录,并最终用文件填充它。
我想删除所说的目录。我试过了:
rmdir -- -A
但它随后告诉我该目录中仍有文件。而且我不知道如何 cd 进入目录以删除所述文件。
我应该怎么做才能摆脱这个麻烦的目录?
在每个命令上使用 --。
您可以将 ./ 放在文件前面——这样 rm 或 rmdir 不会表现得好像文件名是一个选项标志。
您还可以发出选项 -- 它告诉 rm 将 -- 之后的所有内容都视为文件名,并且它不应再处理任何选项。可能有一些时髦的旧版本 rm 不遵守这一点,尽管这些天我的古董 unixes 动物园已经变得非常小,所以我不能告诉你哪些版本或者是否有不理解的版本——。
无论如何,您应该养成在删除时将 ./ 放在名称前面的习惯——您永远不知道目录中是否存在 -r 或 -rf 命名文件。您可以说您应该始终使用 -- 但我发现 ./ 更自然,因为它明确表示“我想删除此目录中的文件,而不是任何 * 发生 glob 的内容”
重命名然后正常处理:
rmdir 不会删除其中包含任何内容的目录。“rm -rf”会。rmdir 比“rm -rf”安全得多。Moo 的回答可能仍然是最好的。
上面的命令对我有用。
另一种方法是通过 inode 删除(这适用于具有其他字符的文件/目录,这些字符仅 rm 难以删除)。
find 可以这样删除目录:
我遇到过类似的情况,我不小心创建了 -p 文件夹,因为我的团队成员提供的创建目录的脚本在 -p 部分包含特殊字符。
等等:mkdir –p /home/web/country/pl/temp
mkdir: 无法创建目录`/home/web/country/pl/temp': 没有这样的文件或目录
我发现在目录 /home/web/country/ 下创建了 -p 目录
drwxr-x--- 2 web web 4096 Jun 20 19:22 –p/
我尝试使用上述选项 rm -rf -- -p 删除
它不起作用,文件夹仍然存在(可能是因为 -p 是特殊字符/非 ascii)
我设法使用以下命令删除此文件夹
rm -r *p
由于我没有任何其他名称中带有 *p 的文件夹,所以我觉得尝试这个可以节省。
我试图删除一个名为
-p
. @Moo 的答案实现了我无法做到的rm ./-p
,在谷歌搜索后,它在许多网页中广泛可用。另一种方法是使用 inode 编号。我使用了这里描述的方法:
https://www.cyberciti.biz/tips/delete-remove-files-with-inode-number.html
简而言之,使用以下命令:
find
命令。-exec rm -irf
-exec rm -ifdr
确保
-f
在标志内使用,否则 bash 会抱怨找不到目录或文件。测试: