使用 find 或 fd 锚定排除

使用 find 或 fd 锚定排除

假设我想(递归地)查找目录中的所有文件,但忽略这些文件,例如.gitnode_modules子目录。我可以:

$ fd -uut f -E .git -E node_modules

但这将例如排除./some/dir/node_modules/*或某些类似的内容。

在这种情况下,这可能没问题,但我不想每次需要查找某些内容时都考虑非锚定搜索是否可行。更不用说在某些情况下它不会。

我如何排除./dir,但不排除./**/dir

答案1

要区分这两种情况,请使用谓词-path

$ find . -path ./a -prune -o -type f -print

相关内容