Lame-script

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von smbdyclldlcs, 09.03.2007.

  1. #1 smbdyclldlcs, 09.03.2007
    smbdyclldlcs

    smbdyclldlcs Doppel-As

    Dabei seit:
    29.07.2006
    Beiträge:
    114
    Zustimmungen:
    0
    Ort:
    Mittelhessen
    Ich (kompletter newbie in sachen sh-scripte) würde mir gern ein script basteln, das alle dateien in einem verzeichnis ausliest und sie an lame übergibt, damit dieses sie encodieren kann. soweit bin ich schon dass man mit dir alle dateien in einem ordner anzeigen lassen kann und dass man die ausgabe irgendwie in ne variable stecken müsste. Wie man das nun umsetzt und lame klarmacht, dass er jede datei einzeln nehmen und encodieren soll, weiß ich halt nicht. Bin auch mit nem Link zufrieden, wo das ganze erklährt wird, hab bei google nix finden können.
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Kesar_Neron, 09.03.2007
    Kesar_Neron

    Kesar_Neron Tripel-As

    Dabei seit:
    25.03.2006
    Beiträge:
    218
    Zustimmungen:
    0
    mit find sollte das gehen

    Hallo zusammen,

    wenn ich mich nicht irre, dann ist das was du vor hast kein großer akt. ein einfaches

    find . -name suchkriterium -exec lame(????) ;

    sollte doch dein problem lösen?!

    Korrigiert mich, sollte ich falsch liegen.

    Gruß
     
  4. #3 Wolfgang, 09.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Ist schon richtig, nur wird es bei Leerzeichen vor die Wand laufen.
    Wie das geht ist hier hundertemal erläutert.
    Einfach mal die Boardsuche verwenden.
    Stichwort while read oder xargs...

    Gruß Wolfgang
     
  5. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Und was ist mit
    Code:
    cd $DEINDIR
    lame *
    
    direkt in die bash reinhauen? Ich machs so zumindest mit bladeenc. Du kannst für sowas stupides aber auch gerne ein script basteln ;)
     
  6. #5 Wolfgang, 09.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Damit kannst du aber nur Dateien im aktuellen Verzeichnis bearbeiten.
    Unterverzeichnisse oder andere Pfade (von leerzeichen ganz zu schweigen) gehen so nicht.

    Gruß Wolfgang
     
  7. #6 smbdyclldlcs, 10.03.2007
    smbdyclldlcs

    smbdyclldlcs Doppel-As

    Dabei seit:
    29.07.2006
    Beiträge:
    114
    Zustimmungen:
    0
    Ort:
    Mittelhessen
    das ganze sieht jetzt so aus:
    das ganze erzeugt folgende meldungen:
    was läuft da schief?
     
  8. #7 madfool, 10.03.2007
    madfool

    madfool Tripel-As

    Dabei seit:
    12.08.2004
    Beiträge:
    192
    Zustimmungen:
    0
    Soweit ich das sehe hast du keinen <outfile> angegeben oder?

    Was immer ganz gut geht ist:

    Code:
    cd <directory>
    for mp3 in `ls`
    do
       lame <options> $mp3 <outfile>
    done
    
    da hat man den vorteil das einem der name der eingabedatei zur verfügung steht und man die endung abschneiden kann um zB.mp3 dranzuhängen.

    Gruß
    D.
     
  9. brahma

    brahma Netzpirat

    Dabei seit:
    06.12.2005
    Beiträge:
    709
    Zustimmungen:
    0
    Ort:
    Münsterland
    Ich hab mir da auch ein paar Scripte gebastelt, vielleicht helfen die Dir weiter:

    AudioConverter-Scripte

    Ein Script um alle Dateien in einem Verzeichnis zu konvertieren die verschiedene Formate haben, müsste man sich sicher auch leicht basteln können. Allerdings verlangt lame soweit ich weiss als input eine WAV-Datei, so dass alle anderen Formate erst zu WAV gemacht werden müssen.
     
  10. #9 smbdyclldlcs, 10.03.2007
    Zuletzt bearbeitet: 10.03.2007
    smbdyclldlcs

    smbdyclldlcs Doppel-As

    Dabei seit:
    29.07.2006
    Beiträge:
    114
    Zustimmungen:
    0
    Ort:
    Mittelhessen
    tja... mein script sieht jetzt so aus:
    und erzeugt folgende meldungen:
    @ brahma:
    man kann lame ein bestimmtes inputdateiformat mitteilen, wie ein blick in die manpage verrät:
    es muss also nicht zwingend .wav sein. Bei mir geht es auch eher darum, die bitrate runterzuschrauben, um kleinere dateien zu bekommen.
     
  11. #10 steinex2, 10.03.2007
    steinex2

    steinex2 Grünschnabel

    Dabei seit:
    10.03.2007
    Beiträge:
    1
    Zustimmungen:
    0
    for f in /quellordner/*; do lame -B 128 "$f" "/zielordner/$f"; done
     
  12. #11 smbdyclldlcs, 10.03.2007
    Zuletzt bearbeitet: 10.03.2007
    smbdyclldlcs

    smbdyclldlcs Doppel-As

    Dabei seit:
    29.07.2006
    Beiträge:
    114
    Zustimmungen:
    0
    Ort:
    Mittelhessen
    @ steinex2: dieser code bringt die dateien auf eine größe von durchschnittlich ca. 3 kb und ungefähr 1 sekunde länge... hab keine ahnung was da jetz falsch is...
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    mit
    funktionierts nun. Wie aufmerksamen lesern nicht entgangen sein wird, habe ich im oberen text lame zweimal reingeschrieben... mein fehler, danke madfool. Jetz brauch ich nur noch eine zeile die die leerzeichen in den namen durch underlines ersetzt, sonst kommts zu fehlermeldungen.
     
  13. #12 Wolfgang, 10.03.2007
    Zuletzt bearbeitet: 10.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Das ist auch kein Akt. Wenn du im Pfad keine Leerzeichen hast, geht schon folgendes:
    Code:
    find /path -type f -iname "*mp3"|while read file;do echo $file ${file// /_};done
    Statt echo halt mv verwenden.

    Wenn du Leerzeichen auch im Pfad hast, dann verwende das hier:
    (Pfad wird nicht geändert!)
    Code:
    find /tmp/test -type f -iname "*mp3"|while read file;do newname=$(basename $file);echo $file $(dirname $file)/${newname// /_};done
    
    dto. echo durch mv ersetzen wenn getestet.

    Siehe Variablenexpansion der Shell basename dirname!
    Gruß Wolfgang
     
  14. #13 smbdyclldlcs, 11.03.2007
    Zuletzt bearbeitet: 11.03.2007
    smbdyclldlcs

    smbdyclldlcs Doppel-As

    Dabei seit:
    29.07.2006
    Beiträge:
    114
    Zustimmungen:
    0
    Ort:
    Mittelhessen
    Erzeugt die Ausgabe:
    Was muss ich da noch verändern?
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. #14 Wolfgang, 11.03.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Da du offensichtlich den führenden Slash eingegeben hast, verwende find ohne den führenden Slash im Pfad, oder nimm gleich Variante 2 von mir.

    Gruß Wolfgang
     
  17. #15 smbdyclldlcs, 11.03.2007
    smbdyclldlcs

    smbdyclldlcs Doppel-As

    Dabei seit:
    29.07.2006
    Beiträge:
    114
    Zustimmungen:
    0
    Ort:
    Mittelhessen
    variante 2
    erzeugt die ausgabe:
    Wenn ich die vorherige Version ohne den slash nehme, führt das zu:
     
Thema:

Lame-script