【问题标题】:I cannot use rmdir to remove a directory as there seems to be a file in the directory with the same name that cannot be deleted我无法使用 rmdir 删除目录,因为目录中似乎有一个无法删除的同名文件
【发布时间】:2016-04-01 16:31:22
【问题描述】:

大家好,我是一个完全的编程初学者,并试图用谷歌搜索这个答案,但没有任何乐趣。

我正在关注 Zed Shaw 的“命令行速成课程”,并且使用 rmdir 碰壁了。

我使用 mac 并且知道删除隐藏文件,例如 .DS_Store,并且已经为我的目录这样做了。但是,它仍然说目录不是空的,ls -la 似乎显示了一个共享目录名称的文件:

目录joe见下文

drwxr-xr-x  3 MyLaptop staff  102  1 Apr 16:52 .

drwxr-xr-x  4 MyLaptop  staff  136 31 Mar 22:32 ..

drwxr-xr-x  3 MyLaptop  staff  102  1 Apr 16:51 joe

我已尝试删除此文件,但它不允许我删除,我无法删除目录,任何人都可以提出解决方案吗?

【问题讨论】:

    标签: macos bash terminal command


    【解决方案1】:

    不是文件。行首的d 告诉您它是一个目录。实际上,它正是您要删除的目录。

    rmdir 命令要求joe 目录为空。要检查 joe 是否为空,请使用:

    $ ls -la joe
    

    或者先进入那个目录:

    $ cd joe
    $ ls -la
    

    您在joe 的父目录中使用ls -la,因此joe 本身显示在内容中。

    因此检查joe 中的哪些文件并使用rm 删除它们。 ... 条目并不算数,因为它们是对当前目录和父目录的引用。


    注意rm 也可以删除目录,所以你可以简单地使用rm -r joe 来删除joe 中的所有文件 joe 目录本身。

    【讨论】:

    • 非常感谢!仍在掌握导航,但非常感谢您的帮助。
    • “这不是文件”。在 Unix 系列系统中,目录是具有包含其他文件列表的特殊功能的文件。
    • @Kenavoz 是的,但最后那是吹毛求疵。 OP 很清楚地使用了术语文件而不了解 Unix 的所有技术,我相信在这里添加所有这些只会让初学者感到困惑。
    【解决方案2】:

    你也可以使用

    $ rm -r 乔

    rm 命令的 -r 选项将递归删除目录的内容,以及目录本身。

    来自 rm 手册页:

         -r, -R, --recursive
         remove directories and their contents recursively
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-09
      • 2014-04-09
      • 1970-01-01
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多