Frage

Ich weiß, dass alle h-Dateien zu finden, die ich verwenden müssen: finden . -name "* .h" aber wie alle h und CPP-Dateien zu finden?

War es hilfreich?

Lösung

find . -name \*.h -print -o -name \*.cpp -print

oder

find . \( -name \*.h -o -name \*.cpp \) -print

Andere Tipps

find -name "*.h" -or -name "*.cpp"

(redigierte die Sternchen zu schützen, die als Formatierung interpretiert wurden)

Paul Tomblin Bereits hat eine tolle Antwort gegeben, aber ich dachte, dass ich in ein Muster sah, was Sie taten.

Die Chancen sind Sie finden verwenden werden eine Dateiliste zu erzeugen, mit grep einem Tag zu verarbeiten und für eine solche Aufgabe gibt es eine viel benutzerfreundliches Werkzeug, Ack

Funktioniert auf jedem System, das Perl unterstützt, und die Suche durch alle C ++ verwandten Dateien in einem Verzeichnis rekursiv für eine bestimmte Zeichenfolge ist so einfach wie

ack "int\s+foo" --cpp 

"--cpp" standardmäßig entspricht .cpp .cc .cxx .m .hpp .hh .h .hxx Dateien

(Es springt auch Repository dirs standardmäßig so gewohnt Spiel auf Dateien, die wie Dateien in ihnen suchen passieren.)

Eine kurze, klare Art und Weise es mit find zu tun ist:

find . -regex '.*\.\(cpp\|h\)'

Aus der Manpage für -regex: „Dies ist ein Spiel auf dem ganzen Weg, nicht eine Suche.“ Daraus ergibt sich die Notwendigkeit, mit .* Präfix den Anfang des Weges ./dir1/dir2/... vor dem Dateinamen entsprechen.

find . -regex ".*\.[cChH]\(pp\)?" -print

Das ist für mich in Cygwin fein getestet.

Sie können find in dieser kurzen Form verwenden:

find \( -name '*.cpp' -o -name '*.h' \) -print

-print kann entfallen. Mit -o nur zwischen Ausdrücken ist besonders nützlich, wenn Sie mehrere Arten von Dateien finden wollen und eine gleiche Arbeit (sagen wir mal md5sum Berechnung).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top