从查找命令中排除目录

从查找命令中排除目录

我试图在搜索特定文件时掌握排除目录的窍门。

我在 WSL2 上,所以想排除 /mnt/ 文件夹,这样我就不会最终搜索整个文件系统。

我可以:

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

它打印除 /mnt/ 文件夹之外的所有目录和文件,但我正在努力将其与正确的语法结合起来以查找特定文件,例如

find -name example.txt

答案1

find . -path ./mnt -prune -o -name example.txt -print

这是以下的缩写:

find . '(' -path ./mnt -a -prune ')' -o '(' -name example.txt -a -print ')'

AND ( -a,省略时隐含) 的优先级高于 OR (-o ),如许多其他语言

或者:

find . ! '(' -path ./mnt -prune ')' -name example.txt

这是以下的缩写:

find . '(' ! '(' -path ./mnt -a -prune ')' -a -name example.txt ')' -a -print

默认-print操作,因为没有行动表达式中的谓词为 else。

相关内容