微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 如何正确使用修剪? -type d和-type f对修剪有不同的影响?

我用的时候

find . -type f -path ./source/script -prune -o -print;

我在“pruned”./ source / script目录中获取文件.

...
./source/script
./source/script/myapp02.4372d2ea3388.js
./source/script/myapp02.js
./source/script/myapp02.1798d7bc34d2.js
...

但是当我使用时:

find . -path ./source/script -prune -o -type f -print;

“pruned”目录中的文件被省略:

./generate.py
./readme.txt
./source/class/myapp02/Application.js
./source/class/myapp02/Application.js:75:      
./source/class/myapp02/__init__.js
./source/class/myapp02/Application.js~
./source/class/myapp02/theme/Font.js
./source/class/myapp02/theme/Theme.js
./source/class/myapp02/theme/decoration.js
./source/class/myapp02/theme/Color.js
./source/class/myapp02/theme/Appearance.js
./source/class/myapp02/simulation/DemoSimulation.js
./source/class/myapp02/test/DemoTest.js
./source/translation/readme.txt
./source/index.html
./source/index.html~
./source/resource/myapp02/test.png
./Manifest.json
./config.json

another example我看到:

find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -o -print

我看到的唯一区别是-type d在我的代码类型f中.

这是为什么-prune被忽略而且find程序在“pruned”目录中搜索的唯一原因?

解决方法:

find . -type f -path ./source/script -prune -o -print;

被解释为

find . (-type f AND -path ./source/script AND -prune) OR (-print);
find . -path ./source/script -prune -o -type f -print;

被解释为

find . (-path ./source/script AND -prune) OR (-type f AND -print);

请注意,-print和-prune是评估为true的表达式.

因此,如果(-path ./source/script AND -prune)为true,则不计算(-type f AND -print)并且不调用-print.并且`(-path ./source/script AND -prune)对于./source/script的所有文件和子目录都是如此

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐