find コマンドは -print の有無で異なる出力を出す

find コマンドは -print の有無で異なる出力を出す
find src/ -name "*.cc" -o -name "*.cpp" -print
find src/ -name "*.cc" -o -name "*.cpp"

意図された動作は、ディレクトリとそのすべてのサブディレクトリ内のすべての C++ ファイルを検索することです。私が理解したところによると、-print コマンドがデフォルトでした。ただし、これらの 2 つのコマンドでは結果が大きく異なります。これらをファイル (それぞれprintednotprinted) にリダイレクトすると、次のようになります。

$ wc -l printed notprinted
1813 printed
1979 notprinted

ソートされた各ファイルを比較してもあまり役に立ちません。 から除外されるものについての明確なパターンはありませんprinted

何が起きてる?

答え1

答えは優先順位です。アクションが指定されていない場合は印刷されますが、アクションを指定すると、要求した内容が実行されます。ファイル-printの印刷のみの例では.cpp、おそらく次のようになります。

find src/ \( -name "*.cc" -o -name "*.cpp" \) -print

異なるアクションを持つ複数の条件を設定できます。

関連情報