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

use*_*038 3 bash find

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

dir/
   file.py
   .hidden_file
   .hidden_dir/
      file.c
Run Code Online (Sandbox Code Playgroud)

我希望输出是:

./dir/file.py
Run Code Online (Sandbox Code Playgroud)

但是,我得到:

./dir/file.py
./dir/.hidden_dir/file.c
Run Code Online (Sandbox Code Playgroud)

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

jw0*_*013 9

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

find dir -name '.*' -prune -o -print
Run Code Online (Sandbox Code Playgroud)

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

  • 你在哪里添加`-type f`?我会把它放在 `-o` 和 `-print` 之间。 (2认同)