我试图在搜索特定文件时掌握排除目录的窍门。
我在 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。