Andreas Pakulat wrote: > Noch "besser" als for i in *.done oder for i in $(ls *.done) ist > > ls *.done | while read f ; do ... ; done > > gerade wenns sehr viele Dateien sind, denn dann ist die Argumentliste zu > lang und man landet auf der Nase...
$(ls *.done) faellt ausserdem auch auf die Nase, wenn Leerzeichen oder Newslines in den Dateinamen vorkommen. Bei "ls *.done | while" wird die Argumentliste genauso zu lang. Wenn, dann muss man da find benutzen. Ausserdem interpretiert "read" die Eingabe, hoert ein Dateiname zum beispiel mit einem backslash auf, empfiehlt es sich "read -r" zu verwenden. (Zugegeben, in diesem Fall kommt das nicht vor). Hinzukommt, dass "ls | while read" auch nicht geht, wenn der Dateiname mit Leerzeichen anfaengt, das umgeht man mit "ls | while IFS= read -r". Der Haken der Jetzt noch uebrig bleibt, ist, wenn Newlines in einem Dateinamen vorkommen. Da fallen mir nur extrem haessliche Loesungen fuer ein. Deshalb nimmt einfach die zsh: ;) autoload -U zmv zmv '(*).done' '$1' -DaTa -- If you want to program in C, program in C. It's a nice language. I use it occasionally... :-) -- Larry Wall in <[EMAIL PROTECTED]> -- 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)