PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auslesen eines Verzeichnissbaums



Loi
21.08.2005, 14:11
Hi

Ich habe noch nicht so viel Erfahrung mit Bashscripten und habe folgendes Problem:
Meine ganze Musiksammlung ist so strukturiert:

/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:

cd /musik/musiksammlung/
ls -l > ../interpreten.txt

Wäre sehr dankbar für Hinweise wie ich den Rest angehen soll.
MFG Loi

lordlamer
21.08.2005, 15:54
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

Lord Kefir
21.08.2005, 16:56
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

Loi
22.08.2005, 21:03
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...

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