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的所有文件和子目录都是如此

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...