我试图在搜索特定文件时掌握排除目录的窍门。
我在 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)
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没有其他操作谓词。