kanotix.com

Scripte - script das mehrere Dateien verarbeitet gesucht

humbold - 01.06.2006, 13:22 Uhr
Titel: script das mehrere Dateien verarbeitet gesucht
Hallo allerseits!
Ich suche ein script, das mir alle wavs in einem Verzeichnis in mp3 umwandelt. Hab gesehen, da gabs schonmal einen thread, aber ich suche eine ganz einfache version.
Es würde schon reichen, wenn man alle Dateinamen ohne das ".wav" einlesen könnte, und nacheinander abarbeiten, etwa so(pseudocode):


DATEILISTE=<alle Dateien im aktuellen Verzeichnis ohne endung>

for each in $DATEILISTE do
**censored** -m j -q 2 -V 0 --athlower 5 -p $DATEI.wav $DATEI.mp3
end

Veilleicht habt ihr da ja ne einfache verständliche Lösung.

gruß hum
Neuer_User - 01.06.2006, 13:51 Uhr
Titel: script das mehrere Dateien verarbeitet gesucht
Ungefähr so:
Code:

DATEILISTE=`ls *.wav *`

for FILE in $DATEILISTE; do
**censored** -m j -q 2 -V 0 --athlower 5 -p $FILE `basename $FILE .wav`.mp3
done

Ich habe übebrigens die Syntax vom **censored** Befehl ohne nachzusehen einfach übernommen. Keine Garantie, dass die so läuft...
humbold - 01.06.2006, 14:41 Uhr
Titel:
Ja, genau sowas meinte ich!

Gibt nur ein großes Problem:
Der for Befehl verarbeitet die Dateiliste nicht richtig. Leerzeichen werden auch als Trennzeichen erkannt, es sollte aber nur Zeilenumbruch sein. Das Passiert auch wenn ich #!/bin/bash benutze.

Hatte das schonmal, und desshalb sein gelassen. Weiß nicht wie man soche Listen vernünftig verarbeitet.

Die wav Dateien haben folgendes Format:
"Interpret - Album - Titelnummer - Name.wav"


Bisher sieht das script so aus(zum testen):
Code:

#!/bin/sh
# Erstellt zu jeder .wav-Datei im aktuellen Verzeichnis ein .mp3

DATEILISTE=`ls *.wav`

for FILE in $DATEILISTE; do
#**censored** -m j -q 2 -V 0 --athlower 5 -p -b 192 $FILE `basename $FILE .wav`.mp3
echo "$FILE `basename $FILE .wav`.mp3"
done

bluelupo - 01.06.2006, 16:42 Uhr
Titel:
Hi humbold,
so sollte es funktionieren.

Code:

# vorhandene wav-dateien
# ls -1
datei.wav
eine datei.wav
Interpret - Album - Titelnummer - Name.wav
noch eine datei.wav


Shellscript:
Code:

for I in *
 do echo $I
done


Ausgabe des Shellscripts:
Code:

datei.wav
eine datei.wav
Interpret - Album - Titelnummer - Name.wav
noch eine datei.wav

Neuer_User - 01.06.2006, 17:49 Uhr
Titel: Re: script das mehrere Dateien verarbeitet gesucht
Zweiter Versuch:

Code:

DATEILISTE=`ls -Q *.wav`

for FILE in $DATEILISTE; do
**censored** -m j -q 2 -V 0 --athlower 5 -p "$FILE" "`basename $FILE .wav`.mp3"
done


Vielleicht klappt das ja...
jgese - 01.06.2006, 18:12 Uhr
Titel:
Ich habe so ein Script geschrieben.
http://jgese.de/no6/content/view/21/1/
Kannste noch mehr mit machen, Cd's rippen, verschiedene Formate konvertieren (ogg, mp3, flac) und einstellen der Qualität.


humbold - 12.06.2006, 20:38 Uhr
Titel:
So, dank eurer Tipps hab ich jetzt folgende Lösung:

Code:

#!/bin/sh
# wav2mp3.sh
# Erstellt zu jeder .wav-Datei im aktuellen Verzeichnis ein .mp3
# Vorhandene gleichnamige .mp3-Dateien werden überschrieben!

function processFile()
{
MP3FILE=`basename "$2" "$1"`.mp3;
echo -E "Erstelle \"$MP3FILE\" :";
**censored** -m j -q 2 -V 0 --athlower 5 -p -b 192 "$2" "$MP3FILE";
echo -e "fertig! \n";
return
}


for FILE in *; do
 FILETYPE=`echo -E "$FILE" | tail --bytes=5`;
 case $FILETYPE in
   ".wav") processFile ".wav" "$FILE";;
   ".WAV") processFile ".WAV" "$FILE";;
   ".Wav") processFile ".Wav" "$FILE";;
   ".WAv") processFile ".WAv" "$FILE";;
   ".wAv") processFile ".wAv" "$FILE";;
   ".wAV") processFile ".wAV" "$FILE";;
   ".waV") processFile ".waV" "$FILE";;
   ".WaV") processFile ".WaV" "$FILE";;
   # *) echo Lasse "$FILE" aus;;
 esac
done


Besten Dank für die Hilfe!

Gruß hum
Alle Zeiten sind GMT + 1 Stunde
PNphpBB2 © 2003-2007