find mit 2 exec commands

C

CSZ

Grünschnabel
Hi !

Also was ich gerne machen würde ist im Verzeichnisss Musik und allen Unterverzeichnissen bei jeder ogg Datei ogg2mp3 aufrufen, und direkt nachdem das Lied in eine mp3 Datei umgewandelt wurde die ogg Datei löschen.

Wichtig ist, dass ich nicht erst alle ogg Datein umwandeln und danach alle Löschen kann, da dafür nicht genügend Festplatten Platz zur Verfügung steht...

mein erster Versuch:
find /home/Musik -name *.ogg -exec ogg2mp3 '{}' && rm '{}' \;
wollte nicht, wahrscheinlich, weil ich irgendwas kommentieren muss... Bin aber leider nicht darauf gekommen, was ich wie kommentieren muss...

Kann jemand einem Anfänger wie mir helfen ?

LG CSZ
 
Code:
find /home/Musik -name "*.ogg" | while read i; do ogg2mp3 "$i" && rm "$i"; done

Gruß, Daniel
 
Hallo
Als Zusatz:
Wenn du Leerzeichen in den Dateien erwartest, solltest du mit -print0 und xargs arbeiten.
e.g.
Code:
find /path -type f -iname "*ogg" -print0|xargs -0 -n1|while read filename;
do
ogg2mp3 "$filename" && rm "$filename"
done
Und immer schön das Quoting nicht vergesse, sonst knallt es bei Leerzeichen vo die Wand.

Gruß Wolfgang
 
Erstmal Danke für die Antworten !

Habe folgendes ausprobiert:

Code:
find /path -type f -iname "*ogg" -print0|xargs -0 -n1|while read filename;
do
ogg2mp3 "$filename" && rm "$filename"
done
Gruß Wolfgang

Das funktioniert schon so fast... Es wandelt alle ogg Dateien in mp3 Dateien um und löscht nachdem es jeweils eine ogg Datei umgewandelt hat eben jene. Aber die mp3 Dateien landen dann alle in dem Verzeichniss, in dem ich den Befehl aufgerufen habe. Sie sollen aber in dem Verzeichniss landen, in dem die jeweilige ogg Datei war... Also wenn die ogg Datei in ./Fury_in_the_Slaughterhouse/Jau/ war dann soll die mp3 Datei auch da hinkommen...
 
@Wolfgang: Mein Vorschlag funktioniert bei Leerzeichen auch, da find die Ergebnisse bei -print durch "\n" trennt und read auch nur bis "\n" einliest. ;)

@CSZ: Ich kenne ogg2mp3 nicht, aber wenn Du ein Ziel angeben kannst, geht auch folgendes:

Code:
ogg2mp3 -o "${filename%ogg}mp3" "$filename"

Ich nahm in diesem Beispiel an, dass -o die Option für die Zieldatei ist.
 
Zuletzt bearbeitet:
Xanti
Du hast natürlich Recht.
Ich bin halt etwas paranoid, was Dateinamen betrifft, und erwarte sogar andere Steuerzeichen in diversen Dateinamen.
Das ist so Gewohnheit geworden. ;)
Aber auf xargs wollte ich doch hinweisen -> wenn es sehr viele Dateien sind.
Hätte es nur nicht nur an den Leerzeichen festageln sollen.

cu Wolfgang
 
Code:
ogg2mp3 --delete .

@csz: Tut genau das, was Du willst... Wandelt jede ogg Datei im aktuellen Verzeichniss und allen Unterverzeichnissen in eine mp3 Datei um, die dann in dem Unterverzeichniss ist, indem die ogg Datei war und löscht diese dann...

btw: ogg2mp3 wurde genau dafür geschrieben, eine Sammlung die ganz oder teilweise aus oggs besteht in mp3s umzuwandeln und die dabei die Verzeichnissstruktur beizubehalten...

Grüße,
Henner
 

Ähnliche Themen

Server-Monitoring mit RRDTool

Zurück
Oben