Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Umbenennen von Dateien

  1. #1
    Gast

    Post Umbenennen von Dateien

    Hallo,

    ich habe ein kleines Problem mit Dateinamen.
    Ich muss auf einer Remotemaschine ein paar Sachen übersetzen, und ich will, dass die Quelldatei nur wegkopiert wird, wenn die Kompilierung erfolgreich war.

    Ich poste mal mein bisheriges Ergebnis, allerdings läuft das nicht so richtig. Ach ja und rename steht auf der Remote nicht zur Verfügung.
    -------
    echo "*******************************************"
    echo Kompilierungsskript von Martin Ament SG334
    echo "*******************************************"
    echo
    echo
    echo Durchsuche das Verzeichnis
    echo
    echo Kompilierung gestartet > ../compile.log
    echo >> ../compile.log
    echo date >> ../compile.log
    echo >> ../compile.log
    echo >> ../compile.log


    # Übersetzen
    for i in *.fmb;
    do
    if test -s $i
    then
    f60genm module=$i userid=xxxxx Compile_All=YES >> ../compile.log
    else
    echo Es wurden keine Formsmodule gefunden
    fi
    done
    # Und Ordnung machen
    # Übersetzte Dateien sind x.fmx
    # Quellcode Dateien sind x.fmb
    for i in *.fmx;
    do
    if test -e $i
    then
    mv $i ../../forms/$i
    mv `echo $i | tr x b ` ../../compiled/`echo $i | tr x b `
    fi
    done
    ------

    Das ganze läuft auch fein, nur habe ich in manchen Dateinamen ein x, zum Bespiel text_form.fmx und er macht mir dann tebt_form.fmb daraus, und das funktioniert leider nicht. Ich habe keine Möglichkeit gefunden um tr auf einen String zu vergleichen sonst könnte ich fmx durch fmb ersetzen lassen.

    Wäre nett, wenn mir einer weiterhelfen könnte.

    Gruss Martin

  2. #2
    Gast

    Lightbulb

    Hallo,

    habe das Problem lösen können, aber das mit der Substitution war ein sehr guter Ansatz.

    Danke Martin

    PS: Ich habe die Existenz immer überprüft, weil er mir sonst den Fehler brachte, dass er die Quelldatei *.fmx nicht finden konnte.


  3. #3
    pitu
    Gast

    Post

    Wie waere es mit:

    Code:
    for i in *.fmx; do
      NAME=`basename $i .fmx`
      if test -e $i; then
        mv $i ../../forms/$i
        mv $i $NAME.fmb
        ../../compiled/$NAME.fmb
      fi
    done
    thorsten

    ------------------
    Thorsten Wandersmann
    SuSE GmbH, Nuernberg

  4. #4
    Gast

    Post

    Probier ich morgen gleich aus,
    für heute ist Feierabend.

    Dankeschön

    martin

  5. #5
    Gast

    Post

    Schau dir mal mmv an.
    man mmv
    Damit kannst Du deine ganz for-Schleife ersetzten.

    mmv dir1/\*.fmx dir2/\#1.fmb
    Kopiere alle *.fmx aus dir1 nach dir2 als *.fmb

    Ach quatsch, ich seh grad du willst eigentlich was anderes.

    Naja du koentest sed nehmen statt tr
    sed -e "s/\.fmx/.fmb/"

    Mit der Bash geht es aber noch einfacher mit
    ${i/.fmx/.fmb}

    als
    Code:
    for FMX in *.fmx;
    do 
      # wieso du hier nochmal auf Existenz
      # pruefts weis ich nicht, halte ich 
      # aber fuer unnoetig
      FMB=${FMX/.fmx/.fmb}
      mv $FMX ../../forms/$FMX
      mv $FMB ../../compiled/$FMB
    done


Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •