MP3-Player lesen Dateien des Dateisystems nicht sortiert ein, sondern so wie es geschrieben wurde. ls tut so als wäre alles sortiert, aber ls -U entlarvt wie es wirklich aussieht.
Hinweis: Das Skript ist nicht beschränkt auf USB-Sticks. Es funktioniert mit einem beliebigen Verzeichnis.
Achtung Betaversion: Funktioniert für mich, aber ich übernehme keine Garantie!
Quelltext des Skripts - einfach per Copy'n'Paste mitnehmen:
#!/bin/bash
#
# Sortiert die Dateien in allen Verzeichnissen neu.
#
if [ "x$1" == "x" ]; then
echo "Error: path missing"
exit 1
fi
TARGET="$1"
if [ ! -d $TARGET ]; then
echo "Error: not a directory"
exit 1
fi
IFS=$'\n'
cd "$TARGET"
DIRS=$(find . -type d)
# tmp directory
TMPDIR=$(mktemp -d --tmpdir="$TARGET")
for i in $DIRS; do
if [ "$i" == "." ]; then continue; fi
mkdir "$TMPDIR/$i"
for file in `find "$i" -type f`; do
mv "$file" "$TMPDIR/$i"/
done
# alle dateien sind ins tmpdir verschoben
# kopiere alle dateien einzeln sortiert zurück
for file in `find $TMPDIR/"$i" -type f |sort`; do
mv "$file" "$i"
done
done
rm -rf $TMPDIR