如何过滤掉“查找”中的隐藏文件和目录?

Ada*_*tan 5 command-line hidden-files find

我想列出我路径中的所有非隐藏文件和目录。

这意味着.应该从结果中排除以开头的文件,以及路径包含隐藏目录的文件:

foo/bar/.bazz.rc # Exclude
foo/.bar/bazz.rc # Exclude
Run Code Online (Sandbox Code Playgroud)

我怎么做?我试过了:

find -maxdepth 2 -not -iname "*/.*"
Run Code Online (Sandbox Code Playgroud)

但是我的结果中仍然有隐藏文件。

Ada*_*tan 3

使用path而不是iname

find -not -path '*/.*'
Run Code Online (Sandbox Code Playgroud)
  • *- 匹配任何字符串。
  • /- 目录分隔符。


小智 1

您也可以做相反的事情并将它们匹配。它允许find修剪,这可以防止下降到匹配的目录,它可以大大加快您的搜索速度。

find -path '*/.*' -prune -o -print
Run Code Online (Sandbox Code Playgroud)

-print在右侧显式使用仅打印不匹配的对象,在本例中为可见文件和文件夹。