Re: Leerzeichen in Dateinamen
On Sunday 10 October 2004 20:30, Christoph Conrad wrote: Hi Tilo, find . -name '*.jpg' -print | while read file; do echo $file; done while: Expression Syntax. Seltsam... Ich verwende GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu) Herzliche Grüße, Christoph Wirklich seltsam, war wohl ein BB (Brain Bug ;-), kanns nicht reproduzieren... Grüße, Tilo
Re: Leerzeichen in Dateinamen
Christoph Conrad [EMAIL PROTECTED] wrote: , | [EMAIL PROTECTED]/n touch 'eine datei.jpg' | [EMAIL PROTECTED]/n for i in `ls *.jpg`; do echo $i; done | eine | datei.jpg ` Was soll eigentlich das ls? , | [EMAIL PROTECTED]:~/jpgt]$ touch 'eine datei.jpg' | [EMAIL PROTECTED]:~/jpgt]$ for i in *.jpg; do echo $i; done | eine datei.jpg | [EMAIL PROTECTED]:~/jpgt]$ ` R 'warum einfach...' ob -- In C we had to code our own bugs. In C++ we can inherit them. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Leerzeichen in Dateinamen
Hi Robert, for i in *.jpg; do echo $i; done Boah... R 'warum einfach...' ob Das war z einfach ;-) Herzliche Grüße, Christoph -- [...] denn es ist die Sprache, die den Strom der Zeit anhält. Es existiert keine Statik, es gibt keine Endgültigkeit des Anfangs und des Endes. Heinz von Foerster -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Leerzeichen in Dateinamen
Hi Dirk, for i in `ls *.jpg` ; do echo $i ; done Bisschen anders, aber sinngemäß: find . -name '*.jpg' -print | while read file; do echo $file; done Herzliche Grüße, Christoph -- [...] denn es ist die Sprache, die den Strom der Zeit anhält. Es existiert keine Statik, es gibt keine Endgültigkeit des Anfangs und des Endes. Heinz von Foerster -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Leerzeichen in Dateinamen
Am Samstag, 9. Oktober 2004 21:45 schrieb Dirk Richter: for i in `ls *.jpg` ; do echo $i ; done Wie wärs mit for i in *.jpg ; do echo $i ; done /tmp$ ls *.jpg bar.jpg foo bar.jpg foo.jpg /tmp$ for i in *.jpg ; do echo $i ; done bar.jpg foo bar.jpg foo.jpg Gruß, Uwe -- Keine Angst vor Windows. Ungeladen ist es völlig harmlos. -- Haeufig gestellte Fragen und Antworten (FAQ): http://www.de.debian.org/debian-user-german-FAQ/ Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED] mit dem Subject unsubscribe. Probleme? Mail an [EMAIL PROTECTED] (engl)
Re: Leerzeichen in Dateinamen
Am Samstag, 9. Oktober 2004 23:11 schrieb Uwe Malzahn: Am Samstag, 9. Oktober 2004 21:45 schrieb Dirk Richter: for i in `ls *.jpg` ; do echo $i ; done [...] for i in *.jpg ; do echo $i ; done /tmp$ ls *.jpg bar.jpg foo bar.jpg foo.jpg /tmp$ for i in *.jpg ; do echo $i ; done bar.jpg foo bar.jpg foo.jpg Das ist nicht das Gleiche: [EMAIL PROTECTED]:~/tmp/leer touch a b c.jpg a b c.jpg [EMAIL PROTECTED]:~/tmp/leer ls -l insgesamt 0 -rw-r--r-- 1 jan users 0 2004-10-10 01:29 a b c.jpg -rw-r--r-- 1 jan users 0 2004-10-10 01:29 a b c.jpg [EMAIL PROTECTED]:~/tmp/leer for i in *.JPG; do echo $i; done *.JPG [EMAIL PROTECTED]:~/tmp/leer for i in `ls *.JPG`; do echo $i; done /bin/ls: *.JPG: Datei oder Verzeichnis nicht gefunden Und noch was: Vorsicht mit ungequoteten Argumenten: [EMAIL PROTECTED]:~/tmp/leer for i in *.jpg; do echo $i; done a b c.jpg a b c.jpg [EMAIL PROTECTED]:~/tmp/leer for i in *.jpg; do echo $i; done a b c.jpg a b c.jpg Mit folgender Variante klappt es auch mit Leerzeichen: [EMAIL PROTECTED]:~/tmp/leer ls *.jpg | while read i; do echo $i; done a b c.jpg a b c.jpg [EMAIL PROTECTED]:~/tmp/leer ls *.JPG | while read i; do echo $i; done /bin/ls: *.JPG: Datei oder Verzeichnis nicht gefunden Der Nachteil ist hier, dass die Schleife in einer Subshell abläuft (also innerhalb der Schleife gesetzte Variablen aussen nicht sichtbar sind): [EMAIL PROTECTED]:~/tmp/leer f=xyz [EMAIL PROTECTED]:~/tmp/leer ls *.jpg | while read i; do f=$i; done [EMAIL PROTECTED]:~/tmp/leer echo $f xyz Will man das umgehen, dann greift man doch wieder auf die for-Schleife zurück und stellt in der Schleife sicher, dass es tatsächlich Dateien gibt: [EMAIL PROTECTED]:~/tmp/leer for i in *.JPG; do test -f $i || break; echo $i; done Jan P.S.: Die Intelligenz der for-Schleife ist nicht kompatibel zu anderen Shells. -- Linux-Quickies: http://www.jan-trippler.de PingoS: http://www.pingos.org
Re: Leerzeichen in Dateinamen
Am Samstag, 9. Oktober 2004 22:59 schrieb Christoph Conrad: for i in `ls *.jpg` ; do echo $i ; done Bisschen anders, aber sinngemäß: find . -name '*.jpg' -print | while read file; do echo $file; done Nein, das ist nicht sinngemäß. find sucht rekursiv, findet also auch .jpg-Dateien in Unterverzeichnissen. Um sinngemäß zu bleiben, sollte zumindest noch ein -maxdepth 1 ergänzt werden: find . -name '*.jpg' -maxdepth 1 -print | while read file; do echo $file; done Und mit der while-Schleife brauchst Du den find gar nicht. Nimm stattdessen den ls, dann hast Du das gleiche Ergebnis. Jan -- Linux-Quickies: http://www.jan-trippler.de PingoS: http://www.pingos.org