当我使用
时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
位于我的代码-type f
中。
这是忽略-prune
并且查找程序在“修剪”目录内搜索的唯一原因吗?
答案 0 :(得分:4)
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)
为真,则不会评估(-type f AND -print)
并且不会调用-print
。并且`(-path ./source/script AND -prune)
适用于./source/script