[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Dateinamen kürzen



Andreas Pakulat <apaku@gmx.de>:
> On 30.06.06 16:29:46, Frank Terbeck wrote:
> > Andreas Pakulat <apaku@gmx.de>:
> > > 
> > > ls | grep "done$" | while read f...
> > 
> > Das ist ganz einfach nicht nötig.
> > Unter anderem sollte man sich sicher sein, das ls nicht als Alias
> > expandiert und dann Optionen wie '--color=always' oder '-F' verwendet.
> 
> --color=auto hatte ich, grad mal rausgenommen.

'auto' ist nicht gravierend, 'always' wäre gravierend, weil etwaige
Controlcodes mit ausgegeben würden, egal welches Ausgabemedium ls
erkennt.

> > > > Im übrigen sollte jede Shell mit sehr langen Listen in for Schleifen
> > > > klarkommen.
> > > 
> > > Also die Bash hier kommt mit 3700 Mails im monatl. d-u-g Ordner nicht
> > > zurecht wenn ich alle auflisten lasse (73 Zeichen pro Zeile)
> > 
> > Da würde mich aber interessieren, welches Kommando du da anwendest.
> 
> ls, 
> andreas@morpheus:~/.Mail/debian-user-german.2006-05/cur>alias ls=ls
> andreas@morpheus:~/.Mail/debian-user-german.2006-05/cur>which ls
> /bin/ls
> andreas@morpheus:~/.Mail/debian-user-german.2006-05/cur>/bin/ls *morpheus*
> bash: /bin/ls: Die Argumentliste ist zu lang

Ja, an einen externen Befehl können Argumentlisten schnell mal zu lang
werden. Aber es ging ja hier um for-Schleifen.

> > Denn bei shellinternen Kommandos ist die Menge der Argumente lediglich
> > durch den zur Verfügung stehenden Speicher begrenzt.
> 
> Ich benutze kein bash-internes ls. Warum weiss ich nicht, ich hab
> diesbzgl. nichts verstellt.

Ich bin auch nicht sicher ob die bash ein internes ls hat. Das ist
aber auch nicht der Punkt. Wenn die Argumentliste zu lang wird, dann
kann man das triviale Kommando entweder in eine for-Schleife umwandeln
oder spezialisierte Programme wie xargs verwenden.

> > Ich habe gerade mal eine bash gestartet und eine for Schleife mit vier
> > Millionen Argumenten gestartet:
> > 
> > for i in $(seq 1 4000000) ; do echo $i ; done
> 
> for geht hier auch wunderbar.

Gut, und daher wird in deinem Anwendungsfall auch eine Schleife der
Art

for i in *morpheus* ; do ls $i ; done

funktionieren.

Gruss, Frank



Reply to: