Problem beim anlegen einer Playlist.

Christian Brabandt cblists at 256bit.org
Mit Okt 21 11:54:50 BST 2009


Hi Marc!

On Mi, 21 Okt 2009, Marc K wrote:

> #! /bin/bash
> echo "Geben Sie den Pfad zu ihrer Musik ein"
> read mpfad
> echo "Geben Sie den Pfad zum Speichern der Playlists ein"
> read ppfad
> find $mpfad -type d > /tmp/temp
> while read x
> do      
>         cd   "$x"
>                 for e in mp3 wma wav ogg;do
>                         for f in *.$e;do
>                                 test "$f" = "*.$e" && continue
>                                 echo "$(pwd)/$f" >>$x.m3u
>                         done
>                 done
>         if [ ! -s $x.m3u ] ; 
>         then 
>         rm $x.m3u
>         fi
> find $mpfad/*.m3u | mv *.m3u $ppfad
> done < /tmp/temp
> rm /tmp/temp
> echo "Fertig ¢Joe.deluxe 29.12.2007"
> exit 0

Örgs. Da sind ein paar seltsame Sachen drin. Generell solltest Du Dir 
angewöhnen, Variablen /immer/ zu quoten.

> find $mpfad/*.m3u | mv *.m3u $ppfad

Das funktioniert nicht. Zumindest nich so, wie du es willst.

Analog zum obigen Skript, würde ich folgendes machen:
#!/bin/sh
echo "Geben Sie den Pfad zu ihrer Musik ein"
read mpfad
echo "Geben Sie den Pfad zum Speichern der Playlists ein"
read ppfad
find "$mpfad" -type d -exec sh -c '
find "$1" -maxdepth 1 -mindepth 1 -type f -name "*.mp3" -o -name "*.ogg" 
-o -name "*.wav" -o -name "*.wma" > "${1}"/"${1##*/}".m3u
' find-sh  '{}' \;
find "$mpfad" -type f -name "*.m3u" -empty -delete
find "$mpfad" -type f -name "*.m3u" -exec mv -t "$ppfad" '{}' +
echo "Fertig"

Fehlerhandling fehlt noch im mv Aufruf. Wenn eine Datei bereits 
vorhanden ist, würde mv diese Datei überspringen, IIRC.


Mit freundlichen Grüßen
Christian
-- 
:wq