script zum "replacen"

Post Reply
Message
Author
wittmann
Posts: 26
Joined: 06. Aug 2004 13:46

script zum "replacen"

#1 Post by wittmann »

Hallo zusammen,

ich suche ein script ( z.B. in Perl) , welches einen
Verzeichnisbaum durch geht und in den Dateien
"Wort1" durch "Wort2" ersetzt. kann jemand
einem Neuling durch Code , Netzressouren und
ähnlichem aushelfen (Gerne auch Teillösung wie
z.B. ersetzen in allen Dateien eines Verzeichnisses.
Dank Euch im Voraus !!!

Gruß

Michael Wittmann

User avatar
Lateralus
prolinux-forum-admin
Posts: 1238
Joined: 05. May 2004 7:35

#2 Post by Lateralus »

sed dürfte dies können, aber frag mich nicht, was du da eingeben musst. "man sed"

und ansonsten: jürgen
edit: ach quatsch, natürlich jochen!
Last edited by Lateralus on 04. Feb 2005 14:54, edited 1 time in total.

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#3 Post by jochen »

EIn kleines Shellskript reicht aus: find durchsucht Dir einen Verzeichnisbaum rekursiv und gibt die Namen der Dateien aus, xargs nimmt diese Namen und bastelt sie zu einer Argumentliste für ein kleines perl-Skriptchen:

Code: Select all

find . -type f -print0 | xargs -0 perl -p -i.bak -e 's/wort1/wort2/g'
Bei find kann man mittels -name, -user, -perm usw. die zu bearbeitenden Dateien sehr schön herausfiltern. "man find" hilft weiter. xargs nimmt die Ausgaben von find und übergibt sie als Argumente an dern perl-Einzeiler. Das s//-Kommando tauscht wort1 gegen wort2 aus, und zwar in jeder Datei in allen Zeilen. Diese Ersetzung geschieht in-place, d.h. in der eigentlichen Dateil. Aus Sicherheitsgründen werden die Originaldateien vorher kopiert in eine Sicherungsdatei mit der zusätzlichen Endung .bak.

Jochen
Die grösste Lüge der EDV? "Mal eben..."

wittmann
Posts: 26
Joined: 06. Aug 2004 13:46

Super

#4 Post by wittmann »

Hallo,

hat genauso geklappt wie ichs mir vorgestellt hatte.
Recht herzlichen Dank !
Danke auch für die weiterführende Info

Gruß

Michael Wittmann

Post Reply