find . -type d
可用于查找某个起始点以下的所有目录。但是它也返回当前目录(.),这可能是不希望的。怎么能排除呢?
find . -type d
可用于查找某个起始点以下的所有目录。但是它也返回当前目录(.),这可能是不希望的。怎么能排除呢?
当前回答
POSIX 7解决方案:
find . ! -path . -type d
对于这个特殊的情况(.),golfs比mindepth解决方案(24 vs 26字符)更好,尽管这可能因为!而稍微更难输入。
为了排除其他目录,这将不太好,并需要一个dry变量:
D="long_name"
find "$D" ! -path "$D" -type d
我的决策树之间!和-mindepth:
脚本?使用!可移植性。 GNU的交互式会话? 排除。扔硬币。 排除long_name吗?使用-mindepth。
其他回答
find的递归深度不仅可以通过-maxdepth参数控制,还可以使用相应的-mindepth参数从“顶部”限制深度。所以我们真正需要的是:
find . -mindepth 1 -type d
POSIX 7解决方案:
find . ! -path . -type d
对于这个特殊的情况(.),golfs比mindepth解决方案(24 vs 26字符)更好,尽管这可能因为!而稍微更难输入。
为了排除其他目录,这将不太好,并需要一个dry变量:
D="long_name"
find "$D" ! -path "$D" -type d
我的决策树之间!和-mindepth:
脚本?使用!可移植性。 GNU的交互式会话? 排除。扔硬币。 排除long_name吗?使用-mindepth。
我使用find ./* <…>当我不介意忽略第一级dotfiles (* glob在bash中默认不匹配这些-请参阅shopt内置的'dotglob'选项:https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html)。
eclipse tmp # find . . ./screen ./screen/.testfile2 ./.X11-unix ./.ICE-unix ./tmux-0 ./tmux-0/default
eclipse tmp # find ./* ./screen ./screen/.testfile2 ./tmux-0 ./tmux-0/default
将其输送到sed。不要忘记扩展正则表达式的-r。
find . -type d | sed -r '/^\.$/d'
好吧,一个简单的工作以及(解决方案是不为我的windows git bash)
查找*类型d
它的性能可能不是很好,但可以完成工作,这是我们有时需要的。
[编辑]:正如@AlexanderMills评论的那样,它不会显示根位置的隐藏目录(例如/.hidden),但它会显示隐藏的子目录(例如./folder/. hiddensub)。[git bash在windows上测试]