Am Freitag, 12. September 2008 14:37:49 schrieb Dr. Jürgen Vollmer:
Am Freitag, 12. September 2008 14:15:19 schrieb Steffen Hanne:
Hallo liebe Scriptfreunde,
ich hatte ja geschrieben, dass das Script welches ich fand mein Problem mit der Sortierung von Daten löst. Allerdings funktioniert das Script nicht, wenn Leerzeichen im Dateinamen/Verzeichnisnamen enthalten sind. Vielleicht kann mir jemand helfen.
schnipp>>>>>>>
#! /bin/sh # Usage: # findalpha [-R]
# Reorder the directory entries according to alphanumerical order, so # find output is in order. Useful for preparing files for play on an # MP3 player that follows directory order. # If -R is given, do recursively.
# Thu Dec 27 02:47:00 EST 2007 v. 0.1 jh initial version
# TODO: # handle spaces in file/directory names # figure out why it works on IDE but not on USB, even if the FS is ext3
if [ "$1" = "-R" ] ; then dirs=`find . -type d` else dirs=. fi for dir in $dirs; do cd "$dir" tmp=`mktemp -d -p .` mv `find . -maxdepth 1 -mindepth 1 | grep -v $tmp` $tmp cd $tmp mv `find . -maxdepth 1 -mindepth 1 | sort -n` .. cd .. rmdir $tmp cd "$start" done
das kann nicht funktionieren, - dirs=`find . -type d` enthält eine Liste von Wörtern, wenn da in den Verzeichnisnamen Blanks enthalten sind, dann ist das in $dirs nicht mehr zu erkennen. - mv `find ....` auch find liefert eine Liste von Dateinamen, die blanks enthalten können. mv betrachtet dies dann als separate Dateien.....
besser:
tmp=`mktemp -d -p /tmp`
find . -type d | \ while read d do
das
find $d -type f | \
muss natürlich find "$d" -type f | \ heissen
while read f do mv "$f" $tmp done find $tmp -type f | sort -n \ while read f do
das
mv "$f" $d
muß natürlich mv "$f" "$d" heissen
done done (ungetestet :-)
(ausversehen zu schnell den Send-Knopf gedrückt :-) Bye ürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer