使用 find 仅列出底层目录

使用 find 仅列出底层目录

假设我使用 find 在目录中搜索文件夹。

find "/home/user/Documents" -type d -print

虽然这确实列出了所述位置的所有目录,但我只想获取底层目录的路径。(例如:没有子目录/文件夹的目录)

有没有一种使用 find 的简单方法可以做到这一点?

答案1

我只想获取底层目录的路径

使用-links 2命令行选项。

如果您的文件系统符合 POSIX 标准,那么您可以使用-links(即,一个目录对其中的每个子目录都有一个链接,一个来自其父目录的链接以及一个到其自身的链接,因此如果它没有子目录,则有 2 个链接数)。

以下命令应该可以执行您想要的操作:

find dir -type d -links 2

但是,它似乎无法在 Mac OS X 上运行(正如 @Piotr 提到的)。这是另一个较慢的版本,但可以在 Mac OS X 上运行。它基于他的版本,并进行了更正以处理目录名称中的空格:

find . -type d -exec sh -c '(ls -p "{}"|grep />/dev/null)||echo "{}"' \;

来源:使用 GNU find 仅显示叶目录回答西尔万·德弗雷斯内

相关内容