linux-l: Viele jpg -> ps

Jens Dreger jens.dreger at physik.fu-berlin.de
Mi Mär 21 10:32:46 CET 2001


On Wed, Mar 21, 2001 at 09:28:08AM +0100, Michael Müller wrote:
>
> Aber mit dem 'for i in' habe ich noch ein Problem! Wenn ein Verzeichnis
> oder eine Datei ein Leerzeichen im Namen hat, dann wird es als
> Trennzeichen interpretiert! Kann man das irgendwie verhindern?

Ja:

-------------8<----------------------
#!/bin/sh
IFS="
"
FILES=`find . -type f -name \*.jpg`
for F in $FILES; do echo $F; done
-------------8<------------------------

Aber. Damit bist Du gegen Leerzeichen gewappnet, nicht jedoch gegen
Linebreaks in Dateinamen. Wenn Du Linebreaks in Dateinamen hast, ist
aber wahrscheinlich sowieso etwas faul.

Prinzipell sollte man die Combo find+xargs mit:
	  
     find . -print0 | xargs -0 ...

aufrufen. Dann verwendet find als Trennzeichen eine 0 und xargs
interpretiert keinerlei Sonderzeichen. Damit kommt man mit den
merkwuerdigsten Dateinamen klar. Waere jpeg2ps in der Lage, ohne
den Namen der Outputdatei auszukommen (wuerde also name.eps
selbstaendig anlegen), waere das eine prima Loesung. Alles, was eine
shell oeffnet, fuehrt aber leider dazu, dass alle Sonderzeichen wieder
interpretiert werden, was fatale Folgen haben kann. 

Gruss,

Jens.



Mehr Informationen über die Mailingliste linux-l