Datei-Inhalte ersetzen

Dieses Thema im Forum "Linux-Distributionen" wurde erstellt von greif24, 3. November 2002.

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. greif24

    greif24 ROM

    Registriert seit:
    27. Oktober 2002
    Beiträge:
    5
    Hallo,
    ich möchte in einem Verzeichnis, incl. Unterverzeichnisse, mit einem Script den Inhalt der Dateien ändern.
    Z.B. in allen Dateien das Wort "Test" durch "Test1" ersetzen.
    Wie kann ich dies machen?
    MfG, Rene
     
  2. cirad

    cirad Kbyte

    Registriert seit:
    24. Februar 2001
    Beiträge:
    509
    ----doch unwichtig---

    <- leicht verwirrt
    [Diese Nachricht wurde von cirad am 06.11.2002 | 17:29 geändert.]

    Ich sollte nicht so viele Sachen auf einmal machen. <:

    Im Bild fehlen zweimal die Entwertung vom & beim ä und ü. Das muß genauso wie hinten beim ß und ö.
    [Diese Nachricht wurde von cirad am 06.11.2002 | 17:37 geändert.]
     
  3. cirad

    cirad Kbyte

    Registriert seit:
    24. Februar 2001
    Beiträge:
    509
    Ja witzig ...

    Kann man hier Bilder einfügen, wäre am einfachsten. (: Naja, eben über Link:

    http://people.freenet.de/cirad/1beispiel.png
     
  4. cirad

    cirad Kbyte

    Registriert seit:
    24. Februar 2001
    Beiträge:
    509
    s/�/\&auml/g; s/�/\&uuml/g\'; s/�/\&ouml/g; s/�/\&szlig "$a" > "$a.tmp$PPID" && mv "$a.tmp$PPID" "$a"; done

    ÄÖÜ habe ich jetzt nicht noch eingetragen, mußt du selber tippen. Sicherlich kann man das aber irgendwie mit den äöü zusammenfassen. Dazu reichen meine sed-Kenntnisse aber nicht ohne weiteres aus. Mal sehen, eigentlich müßte ich mir das mal angucken. Dann poste ich vielleicht eine vereinfachte Variante, sofern möglich.

    suchst?
     
  5. cirad

    cirad Kbyte

    Registriert seit:
    24. Februar 2001
    Beiträge:
    509
    s/Test/Test1/g\' "$a" > "$a.tmp$PPID" && mv -f "$a.tmp$PPID" "$a"; done

    Ich übernehme natürlich keine Garantie auf Richtigkeit.

    Erklärung:
    1) find -type f --- findet alle Dateien im aktuellen Verzeichnis und darunter
    2) Die Liste von find wird durch eine Pipe (|) an while weitergereicht und dort Zeilenweise von read in die Variable a eingelesen.
    3) sed ändert Test in Test1 und gibt das aus. Die Ausgabe wird in die Datei $a.tmp$PPID umgeleitet (temporäre Datei). $PPID ist die aktuelle ProzessID und wird nur zum Zwecke der Eindeutigkeit benutzt. Heißt die Datei blub ($a = blub), so heißt die Temporäre Datei beispielsweise blub.tmp24500 (wenn die PID der Shell 24500 ist). Solltest du Dateien haben, die bereits so heißen (also tmp<zahl>), dann würde ich einen anderen Temp-Namen wählen!.
    4) Zum Schluß werden die temporären Dateien wieder nach $a umbenannt.

    PS: Wie gesagt benutzt du das auf eigene Gefahr.
    [Diese Nachricht wurde von cirad am 06.11.2002 | 17:10 geändert.]
     
  6. frrei

    frrei Kbyte

    Registriert seit:
    14. August 2002
    Beiträge:
    137
    ß\' < /publikum/sedtest/$file > /publikum/sedtest/$file"l"
    done

    for file in *.htm
    do
    rm /home/publikum/sedtest/$file
    mv /home/publikum/sedtest/$file"l" /home/publikum/sedtest/$file
    done
    ###################


    echo "!!!Der Ordner wurde abgearbeitet!!!"

    [Diese Nachricht wurde von frrei am 03.11.2002 | 17:54 geändert.]
    [Diese Nachricht wurde von frrei am 03.11.2002 | 18:13 geändert.]
     
  7. wickey

    wickey Megabyte

    Registriert seit:
    8. Januar 2002
    Beiträge:
    1.126
    s/\.Mp3/\.mp3/g\'`;
    done

    Bei oben gezeigtem Beispiel werden alle Dateien im Verzeichnis mit der Endung .Mp3 in .mp3 umbenannt.

    Du müsstest jetzt beides irgendwie kombinieren???

    Bin da leider auch kein Profi. Solltest Du eine Lösung gefunden haben, poste sie bitte.

    grüße wickey
     
  8. Schugy

    Schugy Viertel Gigabyte

    Registriert seit:
    10. Juli 2001
    Beiträge:
    2.587
    Ich weiss nur, das Tool dazu heisst sed.
    Das ist so ein Texteditor, der Inhalte automatisch finden und ersetzen kann.
    Vielleicht findest du ein sed howto.
    Ich kann damit nicht um, bin auch kein Entwickler, der den braucht.
     
Status des Themas:
Es sind keine weiteren Antworten möglich.

Diese Seite empfehlen