Einlesen von Dateinamen und wechseln der Endung

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Buchinho, 24.06.2007.

  1. #1 Buchinho, 24.06.2007
    Buchinho

    Buchinho Guest

    Ich schreibe gerade an einem Skript, dass mir Avi (divx) Dateien umwandelt in Mpeg, damit ich diese auf meiner Linux-PVR-Box schauen kann. Leider komme ich gerade nicht weiter:

    Code:
    #!/bin/bash
    echo $1 | sed 's/avi/mpeg/g' | sed $NEU =
    echo $NEU
    mencoder "$1" -o $NEU -of mpeg ...
    Das Script nimmt immer als Outputfile -of als Dateinamen, obwohl es ja wie oben angegeben ein Mpeg daraus machen soll. Im echo $NEU wird es aber korrekt ausgegeben, komischerweise immer mit einer 1.

    Vielleicht könnt ihr mir helfen?
     
  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 Wolfgang, 24.06.2007
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo
    Was das da oben soll, erschließt sich mir nicht.
    Welche Shell du verwendest, sagst du leider auch nicht.

    Fakt ist, es ist syntaktisch falsch und wird so nie laufen.
    Code:
    |sed $NEU =
    wird 100 % zu einem Fehler führen.
    Leider weiß ich auch nicht, was du damit bezwecken willst.
    Deshalb hier nur ein Vorschlag, wie du aus einem Dateinamen foo.avi foo.mpeg machen kannst.
    Code:
    #wenn $1 den Dateinamen enthält:
    # mit bash oder ksh
    
    FILENAME="${1%\.*}.mpeg"
    # mit GNU sed
    FILENAME=$(echo $1|sed -e 's/avi$/mpeg/gi')
    
    Weiterhin ist es sehr gut, vorher zu testen ob $1 auch als Datei existiert.
    Code:
    if [ -e "$1" ];
    then
    ...
    fi
    
    Das Quoting nie vergessen. Viele finden es cool mit Leerzeichen und anderen Sonderzeichen in Dateinamen umherzuwerfen... bis sie diese dann mal per Skript verarbeiten müssen.
    Dann ist meist schluss mit Lustig.

    Gruß Wolfgang
     
  4. #3 Buchinho, 24.06.2007
    Zuletzt von einem Moderator bearbeitet: 24.06.2007
    Buchinho

    Buchinho Guest

    Super danke, das hat mir schonmal sehr geholfen!
    Wie du siehst, benutze ich die BASH.
    Wenn ich jetzt das Skript mit mehreren Dateien als Übergabeparameter starte, wie kann ich da eine Schleife bauen, damit der Befehl mencoder mehrfach ausgeführt wird und nicht nur für eine Datei?

    Hab noch ein weng dran gebaut, sieht jetzt so aus:

    Code:
    #!/bin/bash
    #Folder where the the newly created mpegs should be saved in
    FOLDER="IpboxReady"
    
    #Does the Folder already exist?
    if [ ! -e "$FOLDER" ]; then mkdir "$FOLDER"; fi;
    
    #For every single argument given by the user, convert!
    for arg in "$@"; do
    	if [ -e "$arg" ]; then
    
    		NEWFILENAME="${arg%\.*}.mpeg"
    
    		mencoder "$arg" -o ./"$FOLDER"/"$NEWFILENAME" -of mpeg -ofps 25 -oac lavc -ovc lavc -srate 44100 -lavcopts acodec=mp2:vcodec=mpeg2video:vhq:keyint=25:vbitrate=10000:abitrate=192:scplx_mask=0.2 -vf pp=hb/vb/dr,hqdn3d -vf scale=720:-2,expand=0:576,crop=704:576
    
    	else echo ---- File does not exist! -----------
    	fi
    	
    done
     
  5. #4 bogue1979, 29.06.2007
    bogue1979

    bogue1979 Grünschnabel

    Dabei seit:
    30.05.2007
    Beiträge:
    5
    Zustimmungen:
    0
    Du könntest das script in der Art aufrufen
    Code:
    for name in $(ls /dir/mit/ausgangsdateien); do dein_script.sh $name ; done
    
    Vorrausgesetzt deine Videodateien haben keine Leerzeichen oder andere Sonderzeichen die du vorher abfangen musst.

    Andererseits kannst du die FOR schleife auch direkt in dein script einbauen.
     
  6. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
Thema:

Einlesen von Dateinamen und wechseln der Endung

Die Seite wird geladen...

Einlesen von Dateinamen und wechseln der Endung - Ähnliche Themen

  1. SED: Zu bearbeitende Dateien aus Textfile einlesen

    SED: Zu bearbeitende Dateien aus Textfile einlesen: Tag zusammen, entweder ich suche nach den falschen Stichworten, oder ich mache was falsch. Mein Problem : Mit dem Befehl grep -Rsl...
  2. Datei einlesen, veränder und ausgeben mit AWK

    Datei einlesen, veränder und ausgeben mit AWK: Hallo, Ich will eine Datei, in der eine Literaturliste steht mit Hilfe von AWK Zeile für Zeile einlesen, dann die Datei so verändern, dass zB....
  3. Schleife zum einlesen vieler Dateien funktioniert nicht

    Schleife zum einlesen vieler Dateien funktioniert nicht: [gelöst] Schleife zum einlesen vieler Dateien funktioniert nicht Hallo Leute, ich habe ein kleines Problem. Mein Script zerlegt eine große...
  4. Kommandozeilenparameter einlesen funktioniert nicht

    Kommandozeilenparameter einlesen funktioniert nicht: Hallo, ich habe da noch so ein Problem mit dem Einlesen der Kommandozeilenparameter meines Scriptes: Es müssen mind. 2 Paramter angegeben...
  5. ^E einlesen und übergeben

    ^E einlesen und übergeben: Ich habe verschieden Rechner die sich am Server registrieren sollen. Dazu benutze ich PuTTY was ja auf dem ASCII-Wert 5 eine Eingabe zurückliegt....