【问题标题】:Finding leaf directories in linux在linux中查找叶子目录
【发布时间】:2015-07-11 23:41:50
【问题描述】:
find . -type d  -links 2 

似乎无法正常工作,并产生空输出,可能是因为我试图在 NTFS 格式光盘上执行此操作?在我的家庭音量上它可以工作。

另外,有趣的是,似乎各种目录都只是输出.ls -dAfind . -type d -links 1 输出所有目录。

Linux 上的 NTFS 是否刚刚损坏?

【问题讨论】:

    标签: shell unix find posix


    【解决方案1】:

    我实际上找到了一个讨厌的替代方案,以防有人在 linux 中的 NTFS 分区遇到同样的问题:

    找到 . -type d -exec sh -c 'test $(find "$0" -maxdepth 1 -type d | wc -l) -eq 1' {} \; -execwhatever_you_want_here {} \;

    它成功了,因为在叶子目录中,唯一返回的目录是'.'

    【讨论】:

      【解决方案2】:

      您的命令find . -type d -links 2 查找具有两个硬链接的目录。

      在 Windows according to Microsoft 上,使用 CreateHardLink 函数创建硬链接。此外,according to Microsoft,该函数支持目录,仅支持文件:

      在现有文件和新文件之间建立硬链接。这个 函数仅在 NTFS 文件系统上受支持,并且仅适用于 文件,而不是目录。

      换句话说,find . -type d -links 2 在 NTFS 上没有返回目录的原因是 NTFS 上没有硬链接目录。如果您想要硬链接目录,则需要不同的文件系统。

      因此,如果尝试硬链接 NTFS 文件系统上的目录,ln 将报告错误也就不足为奇了:

      $ ln dir1 dir2
      ln: ‘dir1’: hard link not allowed for directory
      

      NTFS 确实支持硬链接文件,find . -type f -links 2 将为您提供包含两个链接的文件列表。

      【讨论】:

        猜你喜欢
        • 2013-05-31
        • 2021-03-08
        • 2021-08-06
        • 2021-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-23
        相关资源
        最近更新 更多