从查找命令中排除目录

Tes*_*123 3 find

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

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

我可以:

find . -path './mnt' -prune -o -print
Run Code Online (Sandbox Code Playgroud)

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

find -name example.txt
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 5

find . -path ./mnt -prune -o -name example.txt -print
Run Code Online (Sandbox Code Playgroud)

这是以下的缩写:

find . '(' -path ./mnt -a -prune ')' -o '(' -name example.txt -a -print ')'
Run Code Online (Sandbox Code Playgroud)

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

或者:

find . ! '(' -path ./mnt -prune ')' -name example.txt
Run Code Online (Sandbox Code Playgroud)

这是以下的缩写:

find . '(' ! '(' -path ./mnt -a -prune ')' -a -name example.txt ')' -a -print
Run Code Online (Sandbox Code Playgroud)

这次会自动添加默认操作,因为表达式中-print没有其他操作谓词。