BashBin #6: Dateien durchsuchen
Problem
Alle Dateien suchen und auflisten, welche einen bestimmten Text beinhalten.
In diesem Beispiel werden alle Dateien mit dem Namen “.forward” nach dem Text “enabled” durchsucht und in eine Datei gespeichert. Mit dem Dateinamen wird auch gleich die Zeile mit dem gesuchten Text ausgegeben.
Lösung
[root@cf]# find /home/dir */\.forward -exec grep -H "enabled" {} \; > /tmp/ForwardList.txt
Output (File)
beda1/.forward:# forwarding not enabled
beje3/.forward:# forwarding not enabled
besi1/.forward:# forwarding not enabled
bete1/.forward:# forwarding not enabled
Update
Einfacher und schneller:
[root@cf]grep -rH "enabled" /home/dir > /tmp/ForwardListe.txt
Du kannst alle Antworten zu diesem Eintrag via RSS 2.0 Feed erfolgen. Du kannst einen Kommentar hinterlassen, oder einen Trackback von deiner eigenen Seite.
Noch ein paar Tips:
1. Wieso nicht direkt am Bildschirm ausgeben lassen?
1.5. Falls es dann zu viel Output gibt: einfach | less anhaengen
2. Wenn du bei find mit -exec arbeitest zur sicherheit die {} immer in Anfuehrungszeichen setzen… Wegen den Leerzeichen etc..
Aber der mit dem grep muss ich mir merken… koennte noch nuetzlich werden!
1. Weil ich die Ausgabe mit einer anderen Liste vergleichen musste
2. Danke für den Tipp
Noch einfacher:
find … -exec Befehl {}
das wichtige ist hier das am Ende, anstelle von \; (oder ‘;’ was ich gerne verwende).
Vorteil: “Befehl” wird (meist) nur 1x aufgerufen mit möglichst vielen Parametern. Ist der flexibelere Ansatz (und damit der IMO bessere) und zeigt auch, warum so mancher diese GNUismen (also grep mit -r Parameter) “untoll” (weil nicht pirtabel und überflüssig) findet…
[...] Quelle: BashBin #6: Dateien durchsuchen [...]