find src/ -name "*.cc" -o -name "*.cpp" -print
find src/ -name "*.cc" -o -name "*.cpp"
预期行为是查找目录及其所有子目录中的所有 C++ 文件。据我了解,-print 命令是默认命令。但是,这两个命令给出的结果截然不同。如果我将它们重定向到一个文件(分别为printed
和notprinted
):
$ wc -l printed notprinted
1813 printed
1979 notprinted
对每个已排序的文件进行比较对我没什么帮助。没有明确的模式来判断哪些文件被排除在外printed
。
这里发生了什么?
答案1
答案是优先级。如果没有指定操作,则它会打印,但如果您指定操作,则它会执行您要求的操作。您的示例-print
仅打印.cpp
文件。您可能想要:
find src/ \( -name "*.cc" -o -name "*.cpp" \) -print
您可以设置具有不同操作的多个条件。