如何排除这种从查找/电流/点文件夹“式d”(How to exclude this / curren

2019-08-03 03:18发布

find . -type d

可用于下面的一些起点的所有目录。 但它返回当前目录( . ),也可能是不希望的。 怎样才可以排除?

Answer 1:

POSIX 7的解决方案

find . ! -path . -type d

对于这种特殊的情况下( . ),打高尔夫球好过mindepth溶液(24比26个字符),虽然这可能是稍硬因为打字!

要排除其他目录,这将高尔夫球较差,并且需要干燥的变量:

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

我之间的决策树!-mindepth

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


Answer 2:

不仅的递归深度find可以通过控制-maxdepth参数,该深度也可以从“顶部”使用相应的限制-mindepth参数。 那么,什么人真正需要的是:

find . -mindepth 1 -type d


Answer 3:

我用find ./* <...>时,我不介意忽略一级点文件(在*水珠默认情况下不会在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


Answer 4:

那么,一个简单的解决方法,以及(溶液不是为我工作在Windows上的Git的bash)

find * -type d

它可能不是很高性能的,但能够完成任务,这就是我们有时需要。

[编辑]:作为@AlexanderMills评论它不会显示在根位置(例如隐藏目录./.hidden ),但它会显示隐藏子目录(例如./folder/.hiddenSub )。 [测试用git bash的上窗口]



文章来源: How to exclude this / current / dot folder from find “type d”