Mailinglist Archive: opensuse-de (5177 mails)

< Previous Next >
Re: find | grep
  • From: "Jürgen Vollmer" <juergen@xxxxxxxxxxxxxxxxxxxxx>
  • Date: Tue, 24 Jun 2003 18:00:01 +0200
  • Message-id: <28261.1056470401@xxxxxxxxxxxxxxxxxxxxx>

Horst Jäger<h.jaeger@xxxxxxxxxxxxxxxxx>

irgendwas kriege ich hier nicht auf die Reihe: wenn ich alle Dateien suchen
will, die z.B. mit ".txt" aufhören und "egal" enthalten, geht das nicht mit
find / -iname "*.txt" | grep egal , weil das die gelieferten Pfade
durchsuchen würde und also alles liefert, was mit ".txt" aufhört und im
Pfad irgendwo "egal" enthält. So weit kapier ich noch alles.

Warum geht es aber nicht mit find / -iname "*.txt" | cat | grep egal ?
Meine Frage ist eigentlich zweiteilig:

1. Wie suche ich Dateien, die z.B. mit ".txt" aufhören und "egal" enthalten?
2. Warum klappt das mit cat nicht? Insbesondere: warum verkettet mir find /
-iname "*.txt" | cat nicht einfach die Inhalte aller Dateien, die mit
".txt" aufhören?

cat erhält keine Kommandozeilenargumente, was soll es also tun?
cat wird normalerweise so aufgerufen:
cat file1 file2 ....
oder auch
cat file1 - file2 ....
was bedeutet: wenn file1 gelesen wurde, dann lese stdin, und wenn stdin
fertig, dann lese file2 ....

Richtig geht es so:

find <dir> -iname "*.txt" | xargs grep egal
---------------------------^^^^^^

xargs nimmt liest stdin und ruft das angegebene Programm auf, mit den
Argumenten, die xargs gelesen hat.
Achtung: Das Programm kann mehrfach aufgerufen werden, dann wenn die
Kommandozeile zulange werden würde.

oder auch

Martin Schmiderer <m.schmiderer@xxxxxxxxxxxxxxxxxxxx>:
was Du suchst ist find / -iname '*.txt' -exec grep egal {} \;

hier wird aber für jede Datei die find findet grep aufgerufen (d.h. ein Prozess
wird gestartet), und das macht dann schon in der Performance bemerkbar.
Deshalb ist "xargs grep" schneller, da hier nur wenige Prozesse gestartet
werden.

Jürgen

--
Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe
Tel: +49(721) 9204871 Fax: +49(721) 24874
juergen.vollmer@[informatik-vollmer.de|alumni.uni-karlsruhe.de|acm.org]
www.informatik-vollmer.de


< Previous Next >
Follow Ups
References