繁体   English   中英

linux find命令:从结果中排除路径

[英]linux find command: exclude path from result

我使用find命令在一个文件夹中查找所有python文件,并排除一些文件夹。

find . -type d \\( -path ./venv -o -path ./virtualenv -o -path ./lib \\) -prune -o -iname '*.py'

它给出以下输出:

...
./tests/test_a.py
./venv

如何调整find命令在结果集中排除./venv?

如果不指定任何操作,则find将对与表达式匹配的任何文件隐式使用-print -prune总是评估为true(除了防止进一步递归),这就是为什么./venv仍然最终被打印的原因。

为避免这种情况,只需在其他分支上添加-print即可:

find . -type d \( -path ./venv -o -path ./virtualenv -o -path ./lib \) -prune \
       -o -iname '*.py' -print

现在有一个动作,因此find不再打印会被评估为true的所有内容,而是仅打印您明确查找的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM