• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst]"find" zur Automation von oggenc verwenden

Hallo!
Ich möchte oggenc automatisch über ein Verzeichnis samt Unterverzeichissen laufen lassen.
Dazu habe ich ein kurzes Script geschrieben in dem ich find verwenden möchte um Dateien zu finden die mit .waf enden aber als .ogg noch nicht vorhanden sind.

Code:
find /home/rita/mp3/ -name "*.wav" ! -name "*.ogg" ! -empty -exec oggenc -q6 "{}" \; -exec rm "{}" \;

Das funktioniert leider nicht. ich vermute das in "name "*.waf"" bei einem Durchlauf nicht zwangsläufig dieselbe Datei behadelt wird wie in "! -name "*.ogg"".
Hat jemand eine bessere Idee??

Besten Dank im Vorraus
Matthias
 

HBtux

Member
Code:
#!/bin/bash
# Suchpfad mit abschließendem "/" eintragen
SUCH_PFAD="/home/rita/mp3/"

find $SUCH_PFAD -name "*.wav" | while read TITEL_WAV; do
        TITEL=`basename $TITEL_WAV .wav`
        TITEL_OGG=${TITEL}.ogg

        test -f $SUCH_PFAD$TITEL_OGG
        if [ "$?" = "0" ]; then
                echo "Titel ${TITEL} gibt es bereits im WAV- und OGG-Format."
        else
                echo "Wandle ${TITEL_WAV} nach ${SUCH_PFAD}${TITEL_OGG} um."
                # hier Deine gewünschten Befehle eintragen
        fi
done
 
Nachtrag:
Leider hat "basename" nicht nur die Dateiendung sondern auch den Pfad gelöscht, "find" arbeitet aber rekursiv.
Dies hat funktioniert:

Code:
#!/bin/bash
# Suchpfad mit abschließendem "/" eintragen
SUCH_PFAD="/home/rita/mp3/"

cd $SUCH_PFAD
find $SUCH_PFAD -name "*.wav" | while read TITEL_WAV; do
        TITELPFAD=`dirname $TITEL_WAV`
        TITEL=`basename $TITEL_WAV .wav`
        TITEL_OGG=${TITELPFAD}/${TITEL}.ogg

        # test -f $SUCH_PFAD$TITEL_OGG
        test -e $TITEL_OGG
        if [ "$?" = "0" ]; then
                echo "Titel ${TITEL} gibt es bereits im WAV- und OGG-Format."
        else
                echo "Wandle ${TITEL_WAV} nach ${TITEL_OGG} um."
                # hier Deine gewünschten Befehle eintragen
        	cd $SUCH_PFAD
        	oggenc -q6 ${TITEL_WAV}
		rm ${TITEL_WAV}
	fi
 

HBtux

Member
ChewbaccaOnEarth schrieb:
Leider hat "basename" nicht nur die Dateiendung sondern auch den Pfad gelöscht, "find" arbeitet aber rekursiv.
Der find such alles unterhalb von $SUCH_PFAD. - Also sollte kein Problem sein.

Um den Vollen Dateinamen inkl Pfad zu verwenden, kannst Du den Filename aus zwei Variablen zusammensetzen.
Code:
$SUCH_PFAD$TITEL_OGG
$SUCH_PFAD$TITEL_WAV
$TITEL steht für den Titel des Musikstück ohne Dateiendung....
 
Oben