On Monday 06 May 2002 23:53, Mario Duve wrote:
hallo,
gibt es eine möglichkeit, in allen dateien inerhalb eine verzeichnisses nach einem wort zu suchen, z.B xx-xxxx.d und dieses durch xxxx.f zu ersetzen?
gruss, mario
Eine schnelle Lösung, für den Fall, dass es sich um Ascii Dateien handelt. Ich würde Dir empfehlen erst einmal einige der Dateien in ein Testverzeichnis zu kopieren und dort das Ersetzen zu testen. ---8<--- #!/bin/bash # # filename: changestring # created: 05-may-02 # author: MeMyselfI # last changed: 05-may-02 # tested: ~ fair # # summary # ------- # replaces StringOld by StringNew # in files matching the pattern Fpatt # begin search in Directory # # variables # --------- # Directory : Verzeichnis in dem mit der Suche begonnen wird # Fpatt : Dateimuster nach dem gesucht wird # StringOld : Begriff der gesucht wird # StringNew : Begriff der eingefügt wird # # Check for proper no. of command line args. if [ $# -ne 4 ] then echo "Usage: $(basename $0) /path *filepattern stringold stringnew " exit 1 fi Directory=$1 echo "Start searching from Directory : "$Directory Fpatt=$2 echo "Searching for files matching pattern: "$Fpatt StringOld=$3 echo "Searching for string: "$StringOld StringNew=$4 echo "Replace with new string: "$StringNew echo echo "Creating backup files and replacing strings" echo for file in $(find $Directory -iname $Fpatt) #Traverse all matching $Fpatt files in $Directory do echo "$file -> $file.bak" cp $file $file.bak cat $file | sed -e s/$StringOld/$StringNew/g >$file.tmp mv "$file.tmp" "$file" done echo echo "Yeeeooow, finished" echo ---8<--- Das Script kann noch verbessert werden. - Vergleichen ob bereits *.bak Dateien existieren und wenn ja dann eine andere Dateinamenserweiterung für eine Sicherung der Daten vornehmen. Oder die Sicherungsdateien mit einem Datum versehen. Oder noch besser, die Daten in ein extra angelegtes Verzeichnis kopieren. - Eine Logdatei erstellen die den Ablauf protokolliert. - ... tbc Aufruf des Skriptes mit 4 Parametern, Verzeichnis, Dateimuster, Suchstring, Ersatzstring. Ein starten des Skriptes ohne oder mit ungleich 4 Parametern führt zu einer kurzen Meldung und einem Abbruch. Ich hoffe ich hab keinen Fehler übersehen *schwitz* Zum schmökern empfehle ich file:/usr/share/doc/howto/en/html_single/Adv-Bash-Scr-HOWTO.html besonders die Beispielscripte sind für den Anfang eine gute Orientierung. Tschüss, Thomas p.s. Sorry hab die Mail zuerst per pm verschickt