由于我的愚蠢行为,我意外地创建了一个名为(例如)-A 的目录,并最终在里面塞满了文件。
我想删除所述目录。我尝试过:
rmdir -- -A
但它告诉我目录中仍有文件。我不知道如何进入目录以删除所述文件。
我该怎么做才能摆脱这个麻烦的目录?
答案1
在每个命令上使用 --。
$ ls -la
total 32
drwxr-xr-x 3 richard richard 512 Jul 28 15:44 .
drwxr-xr-x 3 root wheel 512 Jul 6 17:10 ..
$ mkdir -- -A
$ ls -la
total 36
drwxr-xr-x 2 richard richard 512 Jul 28 15:44 -A
drwxr-xr-x 4 richard richard 512 Jul 28 15:44 .
drwxr-xr-x 3 root wheel 512 Jul 6 17:10 ..
$ cd -- -A
$ ls
$ pwd
/home/richard/-A
$ cd ..
$ rm -rf -- -A
$ ls -la
total 32
drwxr-xr-x 3 richard richard 512 Jul 28 15:44 .
drwxr-xr-x 3 root wheel 512 Jul 6 17:10 ..
答案2
您可以在文件前面放置 ./ - 这样 rm 或 rmdir 就不会表现得好像文件名是一个选项标志。
您还可以发出选项 --,它告诉 rm 将 -- 后面的所有内容都视为文件名,并且它不应再处理任何选项。 可能有一些古怪的旧版本的 rm 不遵循这一点,尽管我的古董 unix 动物园最近变得非常小,所以我无法告诉您哪些或是否有版本不理解 --。
无论如何,删除文件时,您都应该养成在文件名称前面加上 ./ 的习惯——您永远不知道目录中是否有以 -r 或 -rf 命名的文件。您可能会说您应该始终使用 -- 但我发现 ./ 更自然,因为它明确表示“我想删除此目录中的文件,而不是 * 所指向的任何文件”
答案3
重命名然后正常处理:
$ mv -- -A foo
$ find foo
$ rm -rf foo
答案4
rm -fr ./-A
上述命令对我有用。