Auslesen eines Verzeichnissbaums

L

Loi

Grünschnabel
Hi

Ich habe noch nicht so viel Erfahrung mit Bashscripten und habe folgendes Problem:
Meine ganze Musiksammlung ist so strukturiert:
Code:
/musik/musiksammlung/interpret/album/titel.mp3
Nun würde ich gerne mittels Shellscript 3 textdateien erstellen, die jeweils eine alphabetisch sortierte Listeder aller interpreten, aller Alben und aller Titel enthalten.

Für die interpreten sieht es bisher so aus:
Code:
cd /musik/musiksammlung/
ls -l > ../interpreten.txt
Wäre sehr dankbar für Hinweise wie ich den Rest angehen soll.
MFG Loi
 
hi

so ausm bauch raus und ohne eine möglichkeit des prüfens könnte das vielleicht mit find gehen und awk dann.

mit find /pfad/zum/verzeichnis listet er dir alles auf. das müsstest du dann nur zurechtstutzen vielleicht mit awk oder so.

vielleicht hilft das ja

mfg frank
 
Ich bin eigentlich 'ne ziemliche Bash-Graupe. Aber vielleicht mal so als kleiner Ansatz:
Ich würde erst einmal 'nen Script schreiben, dass die Dateien auswertet. Das geht mit dem Programm "mp3info" super einfach - z.B. so:
ARTIST=`mp3info -p "%a" $1`

Keine Ahnung wo ich das gefunden habe - einfach mal googeln ;)

Mit "find" kannst'e dann alle Files durch Dein Script jagen:
find /pfad/ -t f -iname "*.mp3" -exec script.sh {} \;

Mfg, Lord Kefir
 
Hi

Danke für die Tipps, aber habe es nun doch noch geschafft, wenn auch etwas anders...

Dachte immer, es müsste doch mit 2 verschachtelten for Schleifen gehen...
habe endlich die richtige Syntax gefunden...
Code:
COLLUMS=200
rm /musik/interpreten.txt;
rm /musik/alben.txt;
rm /musik/titel.txt;
cd /musik/musiksammlung

################################################

echo "###############" >> /musik/interpreten.txt;
echo "# Interpreten #" >> /musik/interpreten.txt;
echo "###############" >> /musik/interpreten.txt;
echo "`ls`" >> /musik/interpreten.txt;

################################################

echo "#########" >> /musik/alben.txt;
echo "# Alben #" >> /musik/alben.txt;
echo "#########" >> /musik/alben.txt;
echo "==============================================" >> /musik/alben.txt;


echo "#########" >> /musik/titel.txt;
echo "# Titel #" >> /musik/titel.txt;
echo "#########" >> /musik/titel.txt;
echo "==============================================" >> /musik/titel.txt;

for i in *;
 do
  echo "$i:" >> /musik/alben.txt;
  echo "$i:" >> /musik/titel.txt;
  cd "$i";
  echo "`ls`" >> /musik/alben.txt;
  echo "==============================================" >> /musik/alben.txt;
#hauptteil der titelschleife
   for j in /musik/musiksammlung/"$i"/*;
    do
     echo "`basename "$j"`:" >> /musik/titel.txt;
     cd "$j";
     echo "`ls`" >> /musik/titel.txt;
     echo "----------------------------------------------" >> /musik/titel.txt;
     cd ..;
    done
    echo "==============================================" >> /musik/titel.txt;
    echo "----------------------------------------------" >> /musik/titel.txt;
##
  cd ..;
 done

Hilft ja vieleicht mal noch Jemand anderem...

MFG Loi
 

Ähnliche Themen

datei auslesen und ordner umbenennen - bash unter linux

Dateiensortierung

Zurück
Oben