我正在尝试使用GNU find仅查找不包含其他目录的目录,但是可能包含或可能不包含常规文件。

到目前为止,我最好的猜测是:

find dir -type d \( -not -exec ls -dA ';' \)

但是,这使我获得了一长串“”。

谢谢!

最佳答案

如果文件系统符合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 "{}"' \;

10-05 20:49
查看更多