Find-Befehl gibt unterschiedliche Ausgaben mit/ohne -print

Find-Befehl gibt unterschiedliche Ausgaben mit/ohne -print
find src/ -name "*.cc" -o -name "*.cpp" -print
find src/ -name "*.cc" -o -name "*.cpp"

Das beabsichtigte Verhalten besteht darin, alle C++-Dateien in einem Verzeichnis und allen seinen Unterverzeichnissen zu finden. So wie ich es verstanden habe, war der Befehl -print der Standard. Diese beiden Befehle liefern mir jedoch deutlich unterschiedliche Ergebnisse. Wenn ich sie auf eine Datei umleite ( printedbzw. notprinted):

$ wc -l printed notprinted
1813 printed
1979 notprinted

Das Vergleichen der einzelnen sortierten Dateien hilft mir nicht viel. Es gibt kein klares Muster dafür, was von ausgeschlossen ist printed.

Was ist denn hier los?

Antwort1

Die Antwort ist die Priorität. Wenn keine Aktion angegeben ist, wird gedruckt, aber wenn Sie eine Aktion angeben, wird das ausgeführt, was Sie angefordert haben. Ihr Beispiel druckt -printnur .cppDateien. Sie möchten wahrscheinlich:

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

Sie können mehrere Bedingungen mit unterschiedlichen Aktionen haben.

verwandte Informationen