On Son, 22 Sep 2002 at 14:52 (+0200), Thomas Hertweck wrote:
Achim Hoffmann wrote:
Wer hat das geschrieben? Hier fehlt eine attribution line!
find soll ein Verzeichis und alle Unterverzeichnisse nach eine Datei durchsuchen deren Name "foo" enthält.
find . |grep -i foo
(einige Andere werden sagen dass die Pipe unnoetig ist, stimmt: man kann es auch mit find alleine hinschreiben, aber viiiiiiel komplizierter, ausserdem funktioniert's so ueberall)
Was ist an einem $> find . -iname "*foo*" -print kompliziert? Ausserdem wirst Du mit Deinem Loesungsvorschlag auch Verzeichnisse finden - es sind aber nur Dateien gesucht. Also sollte auf alle Faelle noch ein "-type f" in das find- Kommando eingebaut werden, ergo: $> find . -type f -iname "*foo*" -print Es stimmt allerdings, dass manche "find" die Option -iname nicht kennen, da gibt es nur -name...
jan@k500:~/tmp> touch abc AbC aBC xAbCd AabCd jan@k500:~/tmp> ll insgesamt 0 -rw-r--r-- 1 jan users 0 Sep 22 16:19 AabCd -rw-r--r-- 1 jan users 0 Sep 22 16:19 AbC -rw-r--r-- 1 jan users 0 Sep 22 16:19 aBC -rw-r--r-- 1 jan users 0 Sep 22 16:19 abc -rw-r--r-- 1 jan users 0 Sep 22 16:19 xAbCd jan@k500:~/tmp> find . -type f -name "*[aA][bB][cC]*" -print ./AbC ./aBC ./abc ./AabCd ./xAbCd Das sollte auch weitgehend portabel sein, man sollte (ebenfalls aus Gründen der Portabilität) aber das -print nicht vergessen - nicht jedes Unix kommt mit einer Default-Operation daher. Pipe + grep würde ich nur dann nehmen, wenn es _nicht_ GNU find ist und eine komplexere Regular Expression auszuwerten ist (-regex kennt nicht jeder find). Jan