find . -name '*.java' | xargs grep <your pattern here>
Wie kann ich bestimmte Dateien in einem Verzeichnis rekursiv anzeigen?
10049
Eric Wilson
Ich bin neu in Linux und Grep und versuche, mich zurechtzufinden.
Durch die Verwendung kann find -name *.java
ich die Namen aller Java-Dateien in einem bestimmten Verzeichnis finden. Angenommen, ich möchte zählen foo
, wie oft in diesen Dateien vorkommt. Wie soll ich das tun?
Ich habe Dinge ausprobiert wie:
grep -r "foo" *.java
und Antworten erhalten wie:
grep: *.java: No such file or directory
Irgendwelche Ideen?
Dupe: http://superuser.com/questions/3512/
innaM vor 15 Jahren
2
Sorry, ich werde beim nächsten Mal härter aussehen. Bemerkenswert, dass die Fragen so ähnlich waren.
Eric Wilson vor 15 Jahren
0
Der Titel von 3512 könnte * viel * besser sein. "Grundlegende Grep-Nutzungsfrage" sagt Ihnen nicht viel über die eigentliche Frage aus. Wir werden wahrscheinlich mehr Dupes haben, wenn das nicht behoben ist.
Richard Hoskins vor 15 Jahren
0
@richardhoskins, behoben.
John T vor 15 Jahren
0
4 Antworten auf die Frage
- Beliebte
- Neu
- Mit Kommentaren
- Aktiv
15
arathorn
Besser noch, verwenden Sie keine Elemente, die mit einem Leerzeichen versehen sind, damit ein Dateiname mit einem Leerzeichen nicht in zwei Dateinamen aufgeteilt wird: find. -name '* .java' - Typ f -print0 | xargs -0 grep
CoverosGene vor 15 Jahren
5
@CoverosGene: Sie können die Option --replace verwenden, um xargs damit umzugehen - wie folgt: ... | xargs --replace grep "{}"
arathorn vor 15 Jahren
1
Vielen Dank, ich wusste, dass es einen Befehl geben muss, der 'xargs' tut.
Eric Wilson vor 15 Jahren
0
6
user4126
Es gibt ein Werkzeug, das speziell für diese Art von Anforderungen entwickelt wurde: ack .
ack ist ein Programm wie grep, das sich an Programmierer mit großen Bäumen mit heterogenem Quellcode richtet
Lesen Sie auch die "10 wichtigsten Gründe für die Verwendung von ack anstelle von grep". auf der ack- Seite.
Meh. Ein echtes Unix-Tool benötigt einen rekursiven Namen, der auf sein Erbe hinweist ... wie etwa ABTG's Better Than Grep oder so. ACK? Der einzige gute Gedanke ist, dass der Autor des verbesserten NACK bereits einen Namen ausgewählt hat;)
Mikeage vor 15 Jahren
1
Einer der Gründe, warum ich ack wirklich liebe, ist, dass Sie Dateitypen angeben können. Zum Beispiel habe ich mit "ack --html""Es durchsucht alle meine .html -, .htm -, .xhtml -, .dhtml - Dateien auf einmal.
Mark van Lent vor 15 Jahren
0
Ack hat Grep für mich ziemlich ersetzt.
Ryan Thompson vor 15 Jahren
0
3
Manatok
Wie wäre es mit:
grep -irn --include="*\.java" somePhrase *
0
wudeng
find . -type f -name '*.java' -print0 | xargs -0 grep -wo 'foo' | wc -l
Willkommen bei SuperUser! Sie werden feststellen, dass Ihre Antworten mehr Beachtung finden, wenn dies zu aktuelleren Fragen (dieses ist von 2009) und wenn Sie erklären, warum Ihre Antwort besser ist als die bereits akzeptierte.
Eric Wilson vor 11 Jahren
3
@EricWilson Danke für den Rat :)
wudeng vor 11 Jahren
0
Verwandte Probleme
-
9
Was ist der Unterschied zwischen den Befehlen "su -s" und "sudo -s"?
-
4
Gutes freies Ubuntu Server-VMWare-Image benötigt
-
4
Was sind die Unterschiede zwischen den großen Linux-Distributionen? Werde ich es merken
-
2
Begrenzung der CPU-Auslastung für Flash in Firefox?
-
2
Wie kann ich mein Mikrofon unter Debian GNOME zum Laufen bringen?
-
2
Conky-Setups - Beispiele / Ideen?
-
3
Was sind die Unterschiede zwischen Linux Window Managern?
-
2
ThunderBird / Lichtsynchronisation mit SE k770i
-
4
Linux-Dateisystem
-
6
Vollbild-Flash langsam in KDE 4