我正在尝试使用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 "{}"' \;