Ich krieg' grade die Krise! find soll ein Verzeichis und alle Unterverzeichnisse nach eine Datei durchsuchen deren Name "foo" enthält. find 'foo' -maxdepth 1 -dept Ist das so richtig? Er findet nichts, scheint aber auch überhaupt nicht zu suchen. Kann es sein das die Manpage und das CLI von find nicht so hitverdächtig sind? Ich versteh' von der Manpage nur die Hälfte und das CLI scheint mir auch ein kleinwenig bizar (Optionen kommen offenbar nach den Parametern (???)). Phillip
Hi, On Sunday 22 September 2002 12:10, Phillip Richdale wrote:
Ich krieg' grade die Krise!
find soll ein Verzeichis und alle Unterverzeichnisse nach eine Datei durchsuchen deren Name "foo" enthält.
find 'foo' -maxdepth 1 -dept
Ist das so richtig? Er findet nichts, scheint aber auch überhaupt nicht zu suchen.
Nein, ist nicht richtig. Probier mal so: Geh in das übergeordnete Verzeichnis und gib ein find . -name "*foo*" Der Punkt (der Parameter nach find) gibt das Startverzeichnis der Suche an, die alle Unterverzeichnisse einschliesst. Also geht auch find ~/irgendwo/im/Verzeichnisbaum -name "*foo*"
Phillip
Stefan -- Stefan Schmidt jsj-hb at t-online dot de
Hallo, On Sunday 22 September 2002 12:10, Phillip Richdale wrote:
find soll ein Verzeichis und alle Unterverzeichnisse nach eine Datei durchsuchen deren Name "foo" enthält.
find 'foo' -maxdepth 1 -dept
Ist das so richtig? Er findet nichts, scheint aber auch überhaupt nicht zu suchen.
probiere mal: $ find /verzeichnis -type d -name "*foo*" Wenn Du nicht sicher bist, ob "foo" nun "Foo" oder sogar "FOO" heißen kann, ersetze -name durch -iname. Schöne Grüße, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website or on common public keyservers. # find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep" */
Stephan Hakuli wrote:
On Sunday 22 September 2002 12:10, Phillip Richdale wrote:
find soll ein Verzeichis und alle Unterverzeichnisse nach eine Datei durchsuchen deren Name "foo" enthält.
find 'foo' -maxdepth 1 -dept
Ist das so richtig? Er findet nichts, scheint aber auch überhaupt nicht zu suchen.
probiere mal:
$ find /verzeichnis -type d -name "*foo*"
Wenn Du nicht sicher bist, ob "foo" nun "Foo" oder sogar "FOO" heißen kann, ersetze -name durch -iname.
Das ist falsch, das wird nur Verzeichnisse (-type d) aber nicht Dateien (-type f) finden. Philipp sucht aber nach Dateien! Richtig sollte es heissen: $> find /directory/to/search -type f -name "*foo*" -print Die Anmerkungen zu -name und -iname von Stephan sind dabei zu be- achten. Mit der Option -maxdepth schraenkst Du die Tiefe der zu durchsu- chenden Unterverzeichnisse ein. So wie die Option oben verwendet wurde, bewirkt sie genau das Gegenteil von dem, was gemacht wer- den soll, naemlich alle Unterverzeichnisse ebenfalls nach Dateien zu durchsuchen! Gruesse, Thomson
On Sunday 22 September 2002 13:19, Stephan Hakuli wrote:
$ find /verzeichnis -type d -name "*foo*"
*ARGL* Du suchst natürlich nicht nach Verzeichnissen. Also: $ find /verzeichnis -type f -name "*foo*" ^^^ Bye, Stephan -- /* Stephan Hakuli -=-=-=- http://www.hakuli.de/stephan Encryption with GnuPG/GPG is strongly encouraged, my public key is available on my website or on common public keyservers. # find /usr/src/linux-2.2.20 -name "*.[hc]"|xargs grep "can grep" */
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)
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... Gruesse, Thomson
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
* Achim Hoffmann schrieb am 22.Sep.2002: Hier sollte der Vorredner stehen.
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)
man sollte sich schon mit find auseinandersetzen. find ist ein sehr mächtiges Werkzeug, daß oft von großem Nutzen sein kann. Daher sollte man früh lernen, damit umzugehen. Im Übrigen stimmt es nicht, daß obiges find überall funkioniert. Bei vielen UNICE gibt find . gar nichts aus, außer einem exitcode, dort wird explizit ein -print verlangt. Bei GNU-find ist das nicht der Fall. Bernd -- ROTFL = Rolling On The Floor, Laughing = Auf dem Boden wälzen, lachend. SCNR = Sorry, Could Not Resist = Sorry, Ich konte nicht wiederstehen. AFAIK = As Far As I Know = So weit ich weis|BTW = By The Way = Nebenbei bemerkt IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach |Zufallssig. 9
Vielen Dank für die vielfältige Hilfe. Wieder was gelernt. Phillip
participants (7)
-
Achim Hoffmann
-
B.Brodesser@t-online.de
-
Jan.Trippler@t-online.de
-
jsj-hb@t-online.de
-
Qbert@t-online.de
-
Stephan Hakuli
-
Thomas Hertweck