rm -rf 不适用于空目录

gue*_*105 5 unix command-line macos

在终端中,我尝试删除一个目录,但这不起作用:

\n\n
myuser$ rm -rf foo/\nrm: foo/: Directory not empty\n
Run Code Online (Sandbox Code Playgroud)\n\n

在我的主目录中我只有 foo :

\n\n
myuser$ ls\nfoo\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的“ls -la”命令没有任何问题:

\n\n
myuser$ ls -la\ndrwxrwxrwx@ 1 myuser  staff  65536  1 mai 10:53 .\ndrwxrwxrwx@ 1 myuser  staff  32768 28 ao\xc3\xbb  2013 ..\ndrwxrwxrwx  1 myuser  staff  32768  1 mai 10:36 foo\n
Run Code Online (Sandbox Code Playgroud)\n\n

目录 foo 似乎是空的:

\n\n
myuser$ ls foo/\n\nmyuser$ ls -la foo/\nls:  : No such file or directory\ntotal 192\ndrwxrwxrwx  1 myuser  staff  32768  1 mai 10:36 .\ndrwxrwxrwx@ 1 myuser  staff  65536  1 mai 10:53 ..\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是“ls::没有这样的文件或目录”这一行很奇怪。我认为这就是我无法删除该目录的原因。\n我们也可以看到,“ls foo”返回一个空行,就像有东西一样,但是什么呢?以及如何删除呢?

\n\n

谢谢

\n

Mar*_*iae 0

命令

 rm -rf dir
Run Code Online (Sandbox Code Playgroud)

不会删除隐藏文件,以点开头的文件,例如.bashrc。目录不为空诊断意味着您有一些隐藏文件,您可以使用以下任一方式列出它们

 ls -a
Run Code Online (Sandbox Code Playgroud)

 ls .*
Run Code Online (Sandbox Code Playgroud)

您可以递归地擦除它们

 rm -rf .[a-Z]*
Run Code Online (Sandbox Code Playgroud)

然后您将能够 rmdir 有问题的目录。

编辑:

以下编辑证明了我的观点:

  root@rasal:/tmp# mkdir ttp
  root@rasal:/tmp# cd ttp
  root@rasal:/tmp/ttp# touch .test
  root@rasal:/tmp/ttp# ls -a
  .  ..  .test
  root@rasal:/tmp/ttp# rm -rf *
  root@rasal:/tmp/ttp# ls -a
  .  ..  .test
  root@rasal:/tmp/ttp# 
Run Code Online (Sandbox Code Playgroud)

  • 您的示例显示了一些不同的内容 - 即“*” glob 不包含隐藏文件。这当然是正确的,但与所提出的问题无关,因为不涉及通配符。您说“`rm -rf dir`不会删除隐藏文件”,这是错误的,这就是我的示例所示的内容。 `rm -rf dir` 将删除所有目录内容,无论它们是否是点文件。 (4认同)

归档时间:

查看次数:

8453 次

最近记录:

11 年,4 月 前