Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
Bash-Script - Hilfe...
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

 
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum
View previous topic :: View next topic  
Author Message
Martux
Veteran
Veteran


Joined: 04 Feb 2005
Posts: 1917

PostPosted: Tue Mar 25, 2008 1:59 pm    Post subject: Bash-Script - Hilfe... Reply with quote

Hallo! Das hat zwar gar nix mit Gentoo zu tun, aber ich weiß nicht wo ich sonst fragen könnte. Also:
Ich möchte viele, viele Wav-Dateien in zig Unterordnern mittels wavpack komprimieren und danach die Waves löschen. Hierzu bräuchte ich ein bashscript, was die Unterordner rekursiv durchackert.
Könnt ihr helfen?
_________________
"Coincidence is God's way of remaining anonymous."
Albert Einstein
"The road to success is always under construction"
Back to top
View user's profile Send private message
Anarcho
Advocate
Advocate


Joined: 06 Jun 2004
Posts: 2970
Location: Germany

PostPosted: Tue Mar 25, 2008 2:05 pm    Post subject: Reply with quote

Ich habe leider gerade kein Linux zur Hand, daher mal grob aus dem Kopf:

Code:
for I in $(find /base/dir -type d); do
   cd "$I"
   for J in *.wav; do
      # do the work with $J here
   done
done


Alternativ kannst du aber auch

Code:
for I in $(find /base/dir -name '*.wav'); do
   DIR=$(dirname "$I")
   FILE=$(basename "$I")
   # do the work with $DIR and $FILE or $I
done


verwenden.

Wie gesagt, gerade aus dem Kopf herraus getippt. Einfach mal probiern. Bei #do the work kannst du ja einfach echo $J, bzw. echo $DIR, $FILE verwenden.


EDIT:

Endlich wieder an einer Linux-Kiste!

Die beiden Varianten hatten Probleme mit Leerzeichen in den Datei- oder Verzeichnisnamen. Hiermit sollte es nun entgültig klappen:

Code:
#!/bin/sh
find /daten/small/Audio -name '*.wav' -print | while read I; do
   DIR=$(dirname "$I")
   FILE=$(basename "$I")
   # do the work with $DIR and $FILE
   echo "$FILE" in "$DIR"
done

_________________
...it's only Rock'n'Roll, but I like it!
Back to top
View user's profile Send private message
Martux
Veteran
Veteran


Joined: 04 Feb 2005
Posts: 1917

PostPosted: Tue Mar 25, 2008 6:46 pm    Post subject: Reply with quote

Hmm, also wenn ich jetzt
Code:

#!/bin/sh
find /home/martux/Neu -name '*.wav' -print | while read I; do
   DIR=$(dirname "$I")
   FILE=$(basename "$I")
   # do the work with $DIR and $FILE
   wavpack -d "$FILE" in "$DIR"
done

mache, bekomme ich folgende Fehlermeldungen:
Code:

WAVPACK  Hybrid Lossless Audio Compressor  Linux Version 4.41.0
 Copyright (c) 1998 - 2007 Conifer Software.  All Rights Reserved.


SHAKER 3H.wav:
can't open file SHAKER 3H.wav!

in.wav:
can't open file in.wav!

/home/martux/Neu/AFRICAN DRUMS.wav:
can't open file /home/martux/Neu/AFRICAN DRUMS.wav!

 **** warning: errors occurred in 3 of 3 files! ****

Sehe ich das richtig und er kommt nicht in die jeweiligen weiteren Unterverzeichnisse?
_________________
"Coincidence is God's way of remaining anonymous."
Albert Einstein
"The road to success is always under construction"
Back to top
View user's profile Send private message
think4urs11
Bodhisattva
Bodhisattva


Joined: 25 Jun 2003
Posts: 6659
Location: above the cloud

PostPosted: Tue Mar 25, 2008 7:54 pm    Post subject: Reply with quote

Martux wrote:
Sehe ich das richtig und er kommt nicht in die jeweiligen weiteren Unterverzeichnisse?

Das Problem sind eher deine Filenamen weil die Leerzeichen enthalten. Entsprechend kapseln dann sollte das funktionieren.
_________________
Nothing is secure / Security is always a trade-off with usability / Do not assume anything / Trust no-one, nothing / Paranoia is your friend / Think for yourself
Back to top
View user's profile Send private message
Anarcho
Advocate
Advocate


Joined: 06 Jun 2004
Posts: 2970
Location: Germany

PostPosted: Tue Mar 25, 2008 8:04 pm    Post subject: Reply with quote

Du rufst wavpack auch völlig falsch auf. Mein Beispiel war nur eine reine Auflistung der Dateien mit den jeweiligen Ordnern.

Wie würdest du denn normalerweise wavpack aufrufen?

Bei mir steht in der Variable $FILE der Dateiname und in der Variable $DIR das Verzeichnis. In $I steht der ganze Pfad der Datei, inklusive des Ordners.

Zum Beispiel:

$I = /home/maz/audio/iced_earth/phantom_of_the_opera.wav
$FILE = phantom_of_the_opera.wav
$DIR = home/maz/audio/iced_earth

Was du also gerade aufrufst ist zum Beispiel:

wavpack -d datei.wav in /dir/der/datei

Das kann natürlich nicht funktionieren.

Aber wenn ich es richtig verstehe willst du einfach "wavpack -d /ordner/datei.wav" aufrufen.

Das geht dann natürlich einfacher mit

Code:
find /dir -name '*.wav' -exec wavpack -d {} \;


Ich würde das allerdings vorher an einem harmlosen Ordner testen, da ich wavpack nicht kenne.
_________________
...it's only Rock'n'Roll, but I like it!
Back to top
View user's profile Send private message
Martux
Veteran
Veteran


Joined: 04 Feb 2005
Posts: 1917

PostPosted: Tue Mar 25, 2008 9:29 pm    Post subject: Reply with quote

Code:

find /dir -name '*.wav' -exec wavpack -d {} \;

Getestet, funktioniert :P Danke Anarcho!
Ja, wavpack ist ein verlustfreies Format, wenn man die Dateien (in meinem Falle Audio-Samples) zurück nach wav konvertiert, hat man die Original-Datei wieder. Genial um ein backup platzsparend zu archivieren.
Vielen Dank nochmal,
Gruß Marcus
_________________
"Coincidence is God's way of remaining anonymous."
Albert Einstein
"The road to success is always under construction"
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Deutsches Forum (German) Diskussionsforum All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum