kurze verstaendnisfrage : wenn ich folgendes (als root) mache
find / -name "*" | grep "zeichenkette" > liste_der_dateien_mit_inhalt_zeichenkette.txt
sollten doch alle dateien im "verzeichnis" / und aller unterverzeichnisse, die den inhalt "zeichenkette" haben in die oben genannte ausgabedatei geschrieben werden, oder?
klappt irgendwie nicht so ganz, vielleicht kann mir einer weiterhelfen, was ich falsch mache.
nafets
suche nach dateien mit inhalt
Re: suche nach dateien mit inhalt
Voraussetzung: die Datei 'ls' hat den <i>Namen</i> ls und binaeren <i>Inhalt</i>.
Alle Dateien finden, deren <b>Inhalt</b> <i>Ausdruck</i> ist:
grep -rli <i>Ausdruck</i> /
Alle Dateien finden, deren <b>Namen</b> <i>Ausdruck</i> enthaelt:
find / -name "*<i>Ausdruck</i>
Alle Dateien finden, deren <b>Inhalt</b> <i>Ausdruck</i> ist:
grep -rli <i>Ausdruck</i> /
Alle Dateien finden, deren <b>Namen</b> <i>Ausdruck</i> enthaelt:
find / -name "*<i>Ausdruck</i>
Re: suche nach dateien mit inhalt
sorry, zu schnell geklickt...
Voraussetzung: die Datei 'ls' hat den <i>Namen</i> ls und binaeren <i>Inhalt</i>.
Alle Dateien finden, deren <b>Inhalt</b> <i>Ausdruck</i> ist:
grep -rli <i>Ausdruck</i> /
Alle Dateien finden, deren <b>Namen</b> <i>Ausdruck</i> enthaelt:
find / -name "*<i>Ausdruck</i>*"
Voraussetzung: die Datei 'ls' hat den <i>Namen</i> ls und binaeren <i>Inhalt</i>.
Alle Dateien finden, deren <b>Inhalt</b> <i>Ausdruck</i> ist:
grep -rli <i>Ausdruck</i> /
Alle Dateien finden, deren <b>Namen</b> <i>Ausdruck</i> enthaelt:
find / -name "*<i>Ausdruck</i>*"
Re: suche nach dateien mit inhalt
Ein, zwei Verbesserungsmöglichkeiten:
1. Zu '-name "*"': find löst die Wildcards auf wie die Shell, und das bedeutet, dass Dateinamen, die mit einem Punkt beginnen, <b>nicht</b> vom Sternchen erfasst werden! Lass es einfach weg, dann findet find sowieso alle Dateien.
2. Das Durchgreppen von Verzeichnissen, block/character devices und so ist meist nicht sinnvoll. Schränke find ein, dass Du nur normale Dateien aufgelistet haben möchtest: "-type f"
3. find liefert eine Liste aller Dateien, die er findet. Mittels grep durchsuchst Du genau diese Liste mit Dateinamen, aber nicht die Dateien selbst! (S. auch vorheriges Posting) Um eine Argumentliste für grep aus diesen Dateinamen zu basteln, verwende einfach xargs.
Fazit:<pre>find / -type f | xargs grep -l "zeichenkette" >dateien-die-zeichenkette-enthalten.txt</pre>
(Ratte: Funktioniert auch da, wo kein GNU-grep installiert ist!)
Hat's geholfen?
1. Zu '-name "*"': find löst die Wildcards auf wie die Shell, und das bedeutet, dass Dateinamen, die mit einem Punkt beginnen, <b>nicht</b> vom Sternchen erfasst werden! Lass es einfach weg, dann findet find sowieso alle Dateien.
2. Das Durchgreppen von Verzeichnissen, block/character devices und so ist meist nicht sinnvoll. Schränke find ein, dass Du nur normale Dateien aufgelistet haben möchtest: "-type f"
3. find liefert eine Liste aller Dateien, die er findet. Mittels grep durchsuchst Du genau diese Liste mit Dateinamen, aber nicht die Dateien selbst! (S. auch vorheriges Posting) Um eine Argumentliste für grep aus diesen Dateinamen zu basteln, verwende einfach xargs.
Fazit:<pre>find / -type f | xargs grep -l "zeichenkette" >dateien-die-zeichenkette-enthalten.txt</pre>
(Ratte: Funktioniert auch da, wo kein GNU-grep installiert ist!)
Hat's geholfen?
Re: suche nach dateien mit inhalt
cooooool, danke leute. ihr habt mir jede menge arbeit ersparrt ich glaub ich pack das ganze mal in' shell-script mit 2 variablen und nenns dann findcontent oder sowas
danke nochmal
nafets
danke nochmal
nafets