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

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

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

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

foo/bar/.bazz.rc # Exclude
foo/.bar/bazz.rc # Exclude

我该怎么做?我试过:

find -maxdepth 2 -not -iname "*/.*"

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

答案1

使用path而不是iname

find -not -path '*/.*'
  • *- 匹配任何字符串。
  • /- 目录分隔符。

答案2

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

find -path '*/.*' -prune -o -print

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

相关内容