给出以下结构:
oz123@debian:~/ $ tree . . ├── a │ ├── a1 │ ├── a2 │ └── a3 ├── a1 │ ├── a11 │ ├── a12 │ └── a31 ├── b │ └── b1 │ ├── b11 │ │ └── b21 │ │ └── b31 │ ├── b12 │ └── b3 └── c 16 directories, 0 files
我发现下面的解决scheme似乎是好的,但我必须certificate,没有testing用例会失败。
链接的帮助页面指出:
您还可以使用“链接”search具有一定数量链接的文件。 目录通常至less有两个硬链接; 他们的。 入口是第二个。 如果他们有子目录,那么每个子目录都有一个名为..的硬链接到其父目录。 的。 除非在find命令行中提到目录条目,否则通常不会search目录条目。
oz123@debian:~/ $ find . -type d -links 2 ./a/a2 ./a/a3 ./a/a1 ./c ./a1/a31 ./a1/a11 ./a1/a12 ./b/b1/b12 ./b/b1/b3 ./b/b1/b11/b21/b31
https://stackoverflow.com/questions/4269798/use-gnu-find-to-show-only-the-leaf-directories
find . -type d -exec sh -c '(ls -p "{}"|grep />/dev/null)||echo "{}"' \;
比…慢
find . -type d -links 2
无论如何。
尝试下面的一行:
find . -type d -execdir sh -c 'test -z "$(find "{}" -mindepth 1 -type d)" && echo $PWD/{}' ';'