Use GNU find to show only the leaf directories

前端 未结 7 660
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-04 18:57

I\'m trying to use GNU find to find only the directories that contain no other directories, but may or may not contain regular files.

My best guess so far has been:

7条回答
  •  隐瞒了意图╮
    2020-12-04 19:39

    You can use -links if your filesystem is POSIX compliant (ie, a directory has a link for each subdirectory in it, a link from its parent and a link to self, thus a count of 2 link if it has no subdirectories).

    The following command should do what you want:

    find dir -type d -links 2
    

    However, it does not seems to work on Mac OS X (as @Piotr mentionned). Here is another version that is slower, but does work on Mac OS X. It is based on his version, with correction to handle whitespace in directory names:

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

提交回复
热议问题