如何从查找“type d”中排除这个/当前/点文件夹

find . -type d 

可以用来查找某个起点下的所有目录。 但它也返回当前目录( . ),这可能是不希望的。 如何排除?

POSIX 7解决scheme

 find . ! -path . -type d 

对于这个特殊情况( . ),高尔夫比mindepth解决scheme(24对26个字符)更好,虽然这可能稍微困难,因为!

为了排除其他目录,这将会不太好,并且需要DRYnessvariables:

 D="long_name" find "$D" ! -path "$D" -type d 

我的决策树之间!-mindepth

  • 脚本? 使用! 便携性。
  • GNU交互式会话?
    • 排除. ? 扔一枚硬币。
    • 排除long_name ? 使用-mindepth

find的recursion深度不仅可以通过-maxdepth参数来控制,深度也可以通过使用相应的-mindepth参数从“top”进行限制。 所以实际需要的是:

 find . -mindepth 1 -type d 

我使用find ./* <...>当我不介意忽略一级点文件( * glob在默认情况下在bash中不匹配 – 请参阅内置的“dotglob”选项: https:/ /www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html )。

 eclipse tmp#查找。
 。
 。/屏幕
 ./screen/.testfile2
 ./.X11-unix
 ./.ICE-unix
 ./tmux-0
 ./tmux-0/default
 eclipse tmp#find ./*
 。/屏幕
 ./screen/.testfile2
 ./tmux-0
 ./tmux-0/default