ForumHilfe bei bash-Script benötigt!
Florian Snow – Dienstag, 31. Januar 2006 19:10 Uhr

Hallo zusammen!
Ich versuche seit einiger Zeit auf der bash ein kleines Script zu basteln, das mir beim Umwandeln meiner Musikdateien hilft. Allerdings bastle ich schon eine ganze Weile daran und konnte einige Probleme nicht lösen, was auch daran liegt, dass ich noch nie so ein Script geschrieben habe.

Was ich machen will, ist folgendes:
Ich habe meine CDs alle in FLAC auf der Festplatte liegen. Dazu habe ich noch ein paar Ogg Vorbis Dateien und ein paar mp3s. Auf meinem mp3-Player sollen aber nur verlustbehaftet komprimierte Dateien liegen. Dazu sollen sie per Script automatisch umgewandelt werden.

Das habe ich soweit auch hinbekommen. Per find werden erst Verzeichnisse gesucht, in einem anderen Verzeichnis die Struktur nachgebildet, dann werden FLAC-Dateien gesucht und per lame/ogg vorbis Encoder entsprechend umgewandelt. Die restlichen Dateien sollen einfach kopiert werden.

Nur möchte ich es jetzt noch schaffen, dass nicht jedesmal alle Dateien neu komprimiert werden müssen, sondern dass das Script überprüft ob eine Datei im Zielverzeichnis bereits existiert und falls ja, diese Datei nicht neu komprimieren.
An der Stelle komme ich aber nicht weiter. Kann mir hier jemand weiterhelfen?

Vielen Dank!

2 Antworten
Ottfried Meyer – Dienstag, 31. Januar 2006 19:56 Uhr

Hallo,

wenn ich Dich richtig verstanden habe, hast DU zwei Directory-Trees.
Beide habe diesselbe Struktur und besitzen teilweise korrespondiere
Dateien unterschiedlicher Kodierung.

In dem Directory -Tree “~/music/von/.” (als Beispiel) befinden sich
zusätzliche FLAC-kodierte Dateien, die bisher nicht umgewandelt wurden.
Diese und nur diese sollen ge-lame-t werden und als mp3 an dersselben
Stelle nur im Directorytree “~/music/nach/.” (auch Bespiel) abgelegt werden.

Andere, bereits ge-lame-te FLAC-Datein unterhalb von “~/music/von/.” sollen
nicht angefasst werden.

Erste simpel-Lösung: Die FLAC-Datei nach erforgreicher lame-ung löschen.
Dann taucht sie bei einer erneuten Absuche nicht wieder auf und belegt
auch keinen weiteren Speicherplatz auf der HD…

Wenn das zu radikal ist, geht Folgendes (ich gehe davon aus, das die
Extension von flac-kodierten Dateien “.flac” ist. Wenn dem nicht so
ist, musst Du das Script halt anspassen…

#!/bin/sh
cd ~/music/von
for i in find . -type f -name ‘*.flac’
do
fn=$( basename ${i} .flac)
dr=$( dirname ${i} )
if [ ! -f ~/music/nach/${dr}/${fn}.mp3 ]
then
lame $i ~/music/nach/$dr}/${fn}.mp3
fi
done

Für all *mp3 Files geht folgendes (kopiert nur alle neueren mp3s nach “nach”)

find ~/music/von/. -type f -name ‘*.mp3’ -exec cp -au \{\} ~/music/nach/. \;

Viel Erfolg!
mcc

Thomas Lange – Mittwoch, 01. Februar 2006 12:43 Uhr

Hi Florian,

es gibt einen abs-guide in dem die bash sehr gut beschrieben ist; auch mit vielen Beispielen. Da findest du bestimmt einige gute Hinweise.

http://www.tldp.org/LDP/abs/abs-guide.pdf

tl017

Florian Snow – Mittwoch, 15. Februar 2006 14:03 Uhr

Hallo ihr beiden!
Vielen Dank für eure Hilfe! Bin leider erst heute dazu gekommen, eure Tipps mal genauer auszuprobieren bzw. anzulesen. Sie bringen mich beide weiter, der eine bei meinem konkreten Problem, der andere etwas allgemeiner.
Vielen Dank!
Florian