Autor |
Nachricht |
|
|
Titel: script das mehrere Dateien verarbeitet gesucht
Verfasst am: 01.06.2006, 13:22 Uhr
|
|
Anmeldung: 24. Aug 2005
Beiträge: 144
|
|
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 |
|
|
|
|
|
|
Titel: script das mehrere Dateien verarbeitet gesucht
Verfasst am: 01.06.2006, 13:51 Uhr
|
|
Anmeldung: 21. Nov 2004
Beiträge: 1018
|
|
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... |
|
|
|
|
|
|
Titel:
Verfasst am: 01.06.2006, 14:41 Uhr
|
|
Anmeldung: 24. Aug 2005
Beiträge: 144
|
|
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
|
|
|
|
|
|
|
Titel:
Verfasst am: 01.06.2006, 16:42 Uhr
|
|
Anmeldung: 17. Sep 2004
Beiträge: 1600
Wohnort: Nahe der bayerischen Voralpen
|
|
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
|
_________________ Ciao bluelupo
SIDux Kernel 2.6.19.1-slh-up-1, tagesaktuell
AMD Athlon XP 2600+ | Memory 2048 MByte
GLX Renderer GeForce 7600 GT/AGP | GLX Version 2.1.0 NVIDIA 97.42
DSL6000 De-FLAT FRITZ!Box Fon WLAN 7050
|
|
|
|
|
|
Titel: Re: script das mehrere Dateien verarbeitet gesucht
Verfasst am: 01.06.2006, 17:49 Uhr
|
|
Anmeldung: 21. Nov 2004
Beiträge: 1018
|
|
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... |
|
|
|
|
|
|
Titel:
Verfasst am: 01.06.2006, 18:12 Uhr
|
|
Anmeldung: 18. Jan 2004
Beiträge: 645
|
|
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.
|
_________________ Bis die Tage
Achim
|
|
|
|
|
|
Titel:
Verfasst am: 12.06.2006, 20:38 Uhr
|
|
Anmeldung: 24. Aug 2005
Beiträge: 144
|
|
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 |
|
|
|
|
|
|