Archiv verlassen und diese Seite im Standarddesign anzeigen : wav to mp3 recursive
Ich habe ein kleines Skript welches mir meine wav files in mp3 umwandelt. Leider kann das Skript es nur für das jeweilige Verzeichniss in dem ich mich befinde
#!/bin/bash
for soundfile in *.wav
do
# mplayer -vo null -ao pcm:file=audiodump.wav "$soundfile"
lame -h --r3mix -b 192 "$soundfile" "${soundfile%.wma}.mp3"
rm "$soundfile"
done
Wie mache ich das ganze das ich ein Ververzeichnis angeben kann und er alle Dateien in den Unterverzeichnisse mit umwandelt und die mp3 files auch in den richtigen Unterverzeichnissen belässt?
Danke
CoolTux
find mit -type d und -exec ... könnte dir helfen!
"man find"
http://www.linuxforen.de/forums/showthread.php?t=237223
In Beitrag #20 ist die Lösung Schwarz auf Weiß, falls du keine Lust hast, den ganzen Thread zu lesen.
Mit find alleine komme ich leider nicht wirklich weiter. Da streikt mein Skipt.
@Ede
Die Seite hatte ich gefunden aber leider nicht verstanden. Ich weiß das ich mit sed irgendwie die langen Pfadenamen wegmachen muß. Denn daran scheint sich mein Skript zu stören. Aber wie genau? Wäre es möglich das mir einer mein Skript anpasst und erklärt.
Vielen lieben Dank
Euer Leon
PS: Ich weiß das ich mehr lernen würde wenn ich jetzt mein Buch nehmen wurde welches ich habe. Aber im Enddefekt ist es für eine Freundin und da fehlt ein wenig die Lust mich jetzt 6 Stunden zum lernen hinzusetzen. Ich hoffe Ihr habt Verständnis.
Vielleicht so... Ungetestet!
#!/bin/bash
echo "Verzeichnis angeben:"
read DIR
for soundfile in $(find $DIR -type f | grep .wav)
do
lame -h --r3mix -b 192 "$soundfile" "${soundfile%.wma}.mp3"
rm "$soundfile"
done
EDIT: Habe es eben getestet , funktioniert wie gewünscht!
Greeez Oli
So könnte das Script (du kannst es /usr/local/bin/wav2mp3 nennen) funktionieren:
#!/bin/bash
cd "$1"
if [ "$(find -maxdepth 1 -type f|grep -m 1 wav)" ]
echo "$1"
for soundfile in *.wav
do
lame -h --r3mix -b 192 "$soundfile" "${soundfile%.wma}.mp3"
rm "$soundfile"
done
fi
Also als erstes in der Konsole mit
cd Verzeichnisins Verzeichnis, wo alle Unterverzeichnisse und wav-Dateien drin sind, wechseln, dann:
find -type d -exec wav2mp3 {} \;
Das Script solltest du natürlich zuerst in einer Testumgebung ausprobieren, damit sich deine Freundin am Ende nicht ärgert.
Du kannst noch
normalizein dein Script einbauen. Ist oft ganz sinnvoll.
Vielen lieben Dank an Euch. Ich werde es morgen wenn ich mehr wach bin testen und dann schauen wir mal.
Ihr seid spitze.
Gruß
CoolTux
Sorry aber ich muß da mal ein unhöffliches SCHUPS machen
Weil ich gerade feststellen musste das der Beitrag den ich gestern gemacht habe auf einmal weg ist.
Also ich habe das Problem das zwar das Skript von zyrusthc soweit geht, es aber Probleme mit nicht konformen Verzeichnis und Dateinamen gibt. Sonderzeichen und Leerstellen in den Verzeichniss und Dateinamen sorgen dazu das ein Verzeichniss /tolle musik mit dieser Fehlermeldung abbricht
kann Verzeichnis tolle nicht finden
kann Verzeichnis musik nicht finden
Er löst also das Verzeichnis in 2 Verzeichnisse auf.
Gruß CoolTux
PS: Das mit dem fehlenden Beitrag ist echt komisch.
Aender mal $DIR in "$DIR".
'cuda
Hat leider auch nichts gebracht
Could not find "James".
Could not find "Horner".
Could not find "%2F".
Could not find "Waiting".
Could not find "For".
Could not find "Disaster".
lame: unrec option .
lame: -m mode must be s/d/j/f/m not p3
LAME 32bits version 3.97 (http://www.mp3dev.org/)
usage: lame [options] <infile> [outfile]
<infile> and/or <outfile> can be "-", which means stdin/stdout.
Try:
"lame --help" for general usage information
or:
"lame --preset help" for information on suggested predefined settings
or:
"lame --longhelp"
or "lame -?" for a complete options list
Could not find "A".
Could not find "Privilege.wav".
Could not find "/home/kerstin/myfiles/Media/Musik/Filmmusik/Apollo".
Could not find "13/Various".
Could not find "Artists".
lame: unrec option .
lame: -m mode must be s/d/j/f/m not p3
LAME 32bits version 3.97 (http://www.mp3dev.org/)
usage: lame [options] <infile> [outfile]
<infile> and/or <outfile> can be "-", which means stdin/stdout.
Try:
"lame --help" for general usage information
or:
"lame --preset help" for information on suggested predefined settings
or:
"lame --longhelp"
or "lame -?" for a complete options list
Could not find "23".
lame: unrec option .
lame: -m mode must be s/d/j/f/m not p3
LAME 32bits version 3.97 (http://www.mp3dev.org/)
usage: lame [options] <infile> [outfile]
<infile> and/or <outfile> can be "-", which means stdin/stdout.
Try:
"lame --help" for general usage information
or:
"lame --preset help" for information on suggested predefined settings
or:
"lame --longhelp"
or "lame -?" for a complete options list
Das hier zum Beispiel
Could not find "Privilege.wav".
Could not find "/home/kerstin/myfiles/Media/Musik/Filmmusik/Apollo".
Could not find "13/Various".
Could not find "Artists".
ist eine Datei. Zu finden unter
/home/kerstin/myfiles/Media/Musik/Filmmusik/Apollo\ 13/Various\ Artists\ -\ 13\ -\ James\ Horner\ %2F\ Master\ Alarm.wav
Ist es wirklich so kompliziert mit Unterverzeichnissen?
Danke für Eure Hilfe
Ist es wirklich so kompliziert mit Unterverzeichnissen?
Danke für Eure Hilfe
Wenn man der Meinung ist, unbedingt Whitespaces in Dateinamen verwenden zu muessen: ja.
'cuda
BedriddenTech
22.07.07, 14:35
Du mußt komplett "find" nutzen, um die Platzhalter für die Dateinamen bzw. um die Variablen Anführungzeichen setzen und dann ist gut. Man kann und darf gerne Leerzeichen in den Dateinamen haben, das ist überhaupt kein Problem.
find /dein/musikverzeichnis -type f -name "*.wav" -exec wav2mp3.sh "{}" \;
Die wav2mp3.sh könnte dann so aussehen:
#!/bin/sh
source_filename="$1"; shift
target_filename=$(echo "$source_filename" | sed 's,wav$,mp3,')
lame -h --r3mix -b 192 "$source_filename" "$target_filename"
Wenn du dann sicher bist, daß die MP3-Dateien richtig erzeugt wurden und alles in Ordnung ist, kannst du alle WAVs löschen:
find /dein/musikverzeichnis -type f -name "*.wav" -exec rm -v "{}" \;
Der ganze Code ist nicht getestet, müßte aber funktionieren.
HTH.
Ich möchte mich bei allen Beteiligten ganz herzlich bedanken. Es hat nun wunderbar funktioniert. Meine Bekannte ist mehr wie Glücklich ;)
Bis bald
CoolTux
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.