递归查找不查找隐藏文件或递归到隐藏目录

递归查找不查找隐藏文件或递归到隐藏目录

我想通过目录递归搜索并查找本身不是隐藏文件且不在隐藏目录中的所有文件。我尝试使用find . -type f -not -name '.*'排除任何基本名称隐藏文件,但它仍然递归到隐藏目录。

dir/
   file.py
   .hidden_file
   .hidden_dir/
      file.c

我希望输出是:

./dir/file.py

但是,我得到:

./dir/file.py
./dir/.hidden_dir/file.c

编辑:我只想列出文件,即-type f

答案1

您必须“修剪”您不想递归到的目录:

find dir -name '.*' -prune -o -print

通常-prune与with一起使用,-o因为它返回true,因此与短路OR结合使用时,它具有跳过-print隐藏文件/目录的效果,这正是您想要的。

相关内容