Hallo Liste, ich möchte in einem ganzen Verzeichnis die Konfigurations-Dateien nach dem Stichwort "char" durchsuchen lassen. Der Befehl find . -name "*" -exec less "{}" ";" funktioniert soweit. Steht auch in der EasyLinux erklärt. Ein less * | grep char funktioniert für das eine Verzeichnis. Meine weitere Kombination hingegen nicht find . -name "*" -exec less "{}" | grep char ";" Wo liegt denn mein Fehler. Ich dachte, so sei das Richtig :-( Habe auch schon mit Anführungszeichen probiert. man und info haben mich nicht sonderlich schlau gemacht. Danke, Kai.
On Wednesday 03 March 2004 09:35, Kai Krämer wrote: > Hallo Liste, > > ich möchte in einem ganzen Verzeichnis die Konfigurations-Dateien nach > dem Stichwort "char" durchsuchen lassen. > Der Befehl > find . -name "*" -exec less "{}" ";" > funktioniert soweit. Steht auch in der EasyLinux erklärt. > > Ein > less * | grep char > funktioniert für das eine Verzeichnis. > > Meine weitere Kombination hingegen nicht > find . -name "*" -exec less "{}" | grep char ";" Ein: find . --type f -exec grep -iH char {} \; - Durchsucht Dateien (-type f). Alle Dateien weil kein Suchmuster für den Dateinamen angegeben wurde. - Es sucht ab dem aktuellen Verzeichnis (.) - Es sucht mit grep nach dem Suchbegriff "char" - Es sucht ohne auf Gross- Klein-Schreibung zu achten (-i) - Und es gibt den Dateinamen der jeweiligen Datei aus die den Suchbegriff enthält (-H) > > Wo liegt denn mein Fehler. Ich dachte, so sei das Richtig :-( Habe auch > schon mit Anführungszeichen probiert. man und info haben mich nicht > sonderlich schlau gemacht. Find ist nach ls wohl eines der komplexesten Kommandos unter GNU/Linux, sei also nicht gleich abgeschreckt wenn es nicht sofort alles das so macht was du dir vorstellst. Ein gutes Linux Buch hilft da oft schon weiter, der Kofler zum Beispiel. Der steht bei fast jeder/m Linuxianer/in im Regal: Michael Kofler, "Linux, Installation, Konfiguration, Einrichtung", Addison Wesley Verlag. Tschüss, Thomas -- Diese Adresse wird nur für die SuSE-Linux Liste benutz. Mails die nicht über die SuSE Liste kommen erreichen mich _garantiert_nicht!_
Vielen Dank für die Hilfe. Am Mi, den 03.03.2004 schrieb Thomas Templin um 09:49:
On Wednesday 03 March 2004 09:35, Kai Krämer wrote:
ich möchte in einem ganzen Verzeichnis die Konfigurations-Dateien nach dem Stichwort "char" durchsuchen lassen.
find . --type f -exec grep -iH char {} \; - Durchsucht Dateien (-type f). Alle Dateien weil kein Suchmuster für den Dateinamen angegeben wurde. - Es sucht ab dem aktuellen Verzeichnis (.) - Es sucht mit grep nach dem Suchbegriff "char" - Es sucht ohne auf Gross- Klein-Schreibung zu achten (-i) - Und es gibt den Dateinamen der jeweiligen Datei aus die den Suchbegriff enthält (-H) Und danke auch für die Erklärungen, Thomas.
Ein gutes Linux Buch hilft da oft schon weiter, der Kofler zum Beispiel. Der steht bei fast jeder/m Linuxianer/in im Regal: Michael Kofler, "Linux, Installation, Konfiguration, Einrichtung", Addison Wesley Verlag. Das wir dann also meine nächste Anschaffung :-)
Gruß, Kai. -- Kai Krämer <kt.kraemer.privat@web.de>
Hi On Wednesday 03 March 2004 09:35, Kai Krämer wrote: > Meine weitere Kombination hingegen nicht > find . -name "*" -exec less "{}" | grep char ";" > > Wo liegt denn mein Fehler. Ich dachte, so sei das Richtig :-( Habe > auch schon mit Anführungszeichen probiert. man und info haben mich > nicht sonderlich schlau gemacht. Wie es geht weißt du ja schon :-) 1. Besser nach type f suchen. Mit Verzeichnissen sockets usw. kann grep nichts anfangen. 2. Im exec-block kannst du so keine pipe anfangen. 3. less ist nicht gut geeignet um die ausgabe weiterzuleiten. Besser cat (was im exec-Teil von find aber auch nicht geht) oder eben {} als Argument. Wenn du aus irgendwelchen Gründen Sachen aus find pipen willst, dann rufe im -exec-Teil ein Skript auf. Dadrin kann man dann pipen wie man will. mfg Axel
Moin Kai, From: Kai Krämer <kt.kraemer.privat@web.de> Date sent: Wed, 03 Mar 2004 09:35:32 +0100
Meine weitere Kombination hingegen nicht find . -name "*" -exec less "{}" | grep char ";"
Die pipe wird von der shell interpretiert. find . -name "*" -exec less "{}" "|" grep char ";" oder find . -name "*" -exec less "{}" ";" | grep char sollte schon besser laufen. Aber wie Du schon aus anderen Beitraegen lesen konntest, gibt es viel bessere Loesungen. Gruss, Oliver
Hallo ! ich denke (man kann sich zwar irren) so könnte es funktionieren: grep -d recurse char * | less Ciao David -----Ursprüngliche Nachricht----- Von: suse-linux-return-296451-d.herning=kbimpuls.com@suse.com [mailto:suse-linux-return-296451-d.herning=kbimpuls.com@suse.com]Im Auftrag von Kai Krämer Gesendet: Mittwoch, 3. März 2004 09:36 An: suse-linux@suse.com Betreff: Falsche pipe? Hallo Liste, ich möchte in einem ganzen Verzeichnis die Konfigurations-Dateien nach dem Stichwort "char" durchsuchen lassen. Der Befehl find . -name "*" -exec less "{}" ";" funktioniert soweit. Steht auch in der EasyLinux erklärt. Ein less * | grep char funktioniert für das eine Verzeichnis. Meine weitere Kombination hingegen nicht find . -name "*" -exec less "{}" | grep char ";" Wo liegt denn mein Fehler. Ich dachte, so sei das Richtig :-( Habe auch schon mit Anführungszeichen probiert. man und info haben mich nicht sonderlich schlau gemacht. Danke, Kai. -- Um die Liste abzubestellen, schicken Sie eine Mail an: suse-linux-unsubscribe@suse.com Um eine Liste aller verfuegbaren Kommandos zu bekommen, schicken Sie eine Mail an: suse-linux-help@suse.com
Hallo, Am Wed, 03 Mar 2004, Kai Krämer schrieb:
Meine weitere Kombination hingegen nicht find . -name "*" -exec less "{}" | grep char ";"
Wo liegt denn mein Fehler.
An der nicht vor der shell versteckten pipe. Aber das less ist eh ueberfluessig, ein -exec grep 'char' "{}" \; waere eh geeigneter. Noch besser ist aber IMO: find . -type f -print0 | xargs -0 grep -H 'char' Das ruft nicht fuer jede Datei einzeln ein grep auf. -dnh -- If you haven't got time to RTFM, you haven't got time to whine on this mailing list.
Am Mittwoch, 3. März 2004 09:35 schrieb Kai Krämer:
Hallo Liste,
ich möchte in einem ganzen Verzeichnis die Konfigurations-Dateien nach dem Stichwort "char" durchsuchen lassen.
Wie wäre es mit einem simplen grep char * oder falls Unterverzeichnisse einbezogen werden sollen grep -r char . Gruß Heiner
participants (8)
-
Axel Heinrici
-
David Haller
-
David Herning
-
hammerP
-
Heiner Kuhlmann
-
Kai Krämer
-
Oliver Fuchs
-
Thomas Templin