Linux find und Leerzeichen in Dateinamen
by Michi on März 19, 2008
Mich hat das jetzt eine völlig überflüssige Stunde meines Lebens gekostet. Wer, so wie ich, über den Linux Befehl “find” eine Schleife auslösen will, und dabei Leerzeichen in Datei- oder Pfadnamen bekommt, wird feststellen, dass die for schleife immer an Leerzeichen ein neues “Result” ergibt. Das bedeutet ein Script wie sowas funktioniert dann nicht
#!/bin/sh
for file in $(find /media/daten/ -iname *.vmx)
do
echo $file
done
Die einzig funktionierende Möglichkeit, war nach unzähligen printf ausdrücke und xargs fummeleien, die Variabel $IFS auf \n zu setzen.
#!/bin/sh
IFS="
"
for file in $(find /media/daten/ -iname *.vmx)
do
echo $file
done
Jetzt wird schön brav jede Einzelne Zeile auch mit Leerzeichen in Pfadangaben ausgegeben. Na dann kanns ja weiter gehen. Ich sollte mehr Linux-Scripte schreiben….
6 comments
danke sehr,
hab grad den ganzen nachmittag verbracht und bin einfach auf keine lösung gekommen.
funktioniert super
by klaus on 11. September 2008 at 14:27. #
thx, habe ich auch gerade gebraucht
by Jaxx on 22. November 2008 at 14:59. #
Das hat mir gerade ein paar Stunden arbeit erspart!
by Dieter on 16. Februar 2009 at 15:44. #
[...] http://www.denkweite.de/…en-in-dateinamen/trackback/ [...]
by Linux find und Leerzeichen in Dateinamen « blog.sonic-lux.net on 28. August 2009 at 10:34. #
dangö
by muxx on 20. Oktober 2009 at 12:05. #
Für die, die dies gerne direkt auf der Shell machen:
IFS_BAK=$IFS; IFS=$'\n'; for i in $(find /media/daten -iname '*.vmx'); do echo $i; done; IFS=$IFS_BAKGrüße, supric
by supric on 5. April 2010 at 12:01. #