Ich bin ein Linux-Neuling. Ich muss in allen * .java-Dateien unter / home / user1 / (einschließlich der Unterordner) nach einer Zeichenfolge "teststring" suchen. Wie kann ich es unter Linux per Shell-Befehl tun.
Eine schnelle Suche ergab diese Frage: superuser.com/questions/208271/… nicht genau das, wonach Sie suchen, aber anstelle von exec cp könnten Sie cat / grep was auch immer
RobotHumans
Ich kann die Datei mit der Erweiterung find / home / user1 -name * .java auflisten.
Darthvader
Antworten:
23
Am einfachsten ist es, die Funktionen von GNU grep zu verwenden:
grep -r --include '*.java' teststring /home/user1
Wenn Sie jemals auf einer anderen Unix-Variante ohne GNU grep arbeiten, haben Sie folgende Möglichkeit:
Dafür ist ack aka ack-grep die Killer-App in meinem Kopf;)
Sie können ack some_string /in/path_yfinden some_string in path_y
Oder einfacher ack some_other_stringzu finden some_other_sting in aktuellem Verzeichnis.
Im Allgemeinen sollten Sie verwenden -print0und -0beim Anschließen von Leitungen findin xargsrichtig die Arbeit mit Dateien , die Leerzeichen oder Zeilenumbrüche in ihren Namen haben:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
Antworten:
Am einfachsten ist es, die Funktionen von GNU grep zu verwenden:
Wenn Sie jemals auf einer anderen Unix-Variante ohne GNU grep arbeiten, haben Sie folgende Möglichkeit:
quelle
grep -r teststring .
mit ack tippst du einfach:
cd /home/user01 && ack --java teststring
quelle
ack --java teststring /home/user01
Dafür ist ack aka ack-grep die Killer-App in meinem Kopf;)
Sie können
ack some_string /in/path_y
finden some_string in path_y Oder einfacherack some_other_string
zu finden some_other_sting in aktuellem Verzeichnis.quelle
Fand es. Es zu posten, da es jemandem helfen könnte.
Bitte korrigieren Sie, ob es einen besseren Weg gibt.
quelle
-print0
und-0
beim Anschließen von Leitungenfind
inxargs
richtig die Arbeit mit Dateien , die Leerzeichen oder Zeilenumbrüche in ihren Namen haben:find /home/user01 -name *.java -print0 | xargs -0 grep "teststring"
quelle