如何从查找“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