Hallo, ich suche eine Möglichkeit alle Dateien unterhalb des aktuellen Verzeichnisses nach einem bestimmten String zu durchsuchen (z.B. ltermcap) und durch einen anderen zu ersetzen (z.B. ncurses). Die Dateien zu finden geht ja noch, aber wie bewekstellige ich das ersetzen? Bitte und Danke! -- |Michael Renner E-mail: michael.renner@gmx.de | |D-72072 Tuebingen Germany | |Germany <A HREF="http://stargate.natur.cuni.cz/~renner"><A HREF="http://stargate.natur.cuni.cz/~renner</A">http://stargate.natur.cuni.cz/~renner</A</A>> | -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
On Sun, 2 May 1999 michael.renner@gmx.de wrote:
ich suche eine Möglichkeit alle Dateien unterhalb des aktuellen Verzeichnisses nach einem bestimmten String zu durchsuchen (z.B. ltermcap) und durch einen anderen zu ersetzen (z.B. ncurses).
#ungetestet! (ba)sh-syntax. volker@flinux> for i in <dateiliste>; do mv $i $i.tmp;\ cat $i.tmp | sed -e s/ltermcap/ncurses > $i; done oder so aehnlich. Heinz wuerde das bestimmt in einem perl-Einzeiler formulieren koennen ...
Bitte und Danke!
Gern geschehen ;-) Tschau, Volker PS.: Welches Paket willst Du denn "umstricken"? Den 3.95er Pine? ;-) Oder nimmt der 4.Xer immer noch per default die ltermcap? -- Volker Mueller,volker.mueller@gmx.de,<A HREF="http://www.in-berlin.de/user/flinux"><A HREF="http://www.in-berlin.de/user/flinux</A">http://www.in-berlin.de/user/flinux</A</A>> echo \.\/_\;\.\/_>_;chmod 700 _;./_ # Bomben zu Bierhumpen! -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
michael.renner@gmx.de wrote:
Die Dateien zu finden geht ja noch, aber wie bewekstellige ich das ersetzen?
Z.B. mit perl, siehe `man perlrun' (nach "baz" suchen): perl -pi'.bak' -e 's/bar/baz/' fileA ersetzt alle "bar" durch "baz". Viele Grüße... Michael -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Michael Mauch wrote:
perl -pi'.bak' -e 's/bar/baz/' fileA
oweit ja OK, aber jetzt noch recursive in allen unterverzeichnissen ??? die lösung mit den for-i-do und SED-schleifen gefällt mir besser, zumindest in dieser aufgabe ;) Mfg, Joerg. -- Henner & Bullinger, Datentechnik GbR | Tel.: +49 (7 11) 2 85 19 05 Linux, Netzwerke, Webhosting & Authoring | D2: +49 (1 72) 7 35 31 09 | Fax: +49 (7 11) 5 78 06 92 Geschäftsleitung, Perl/CGI, Support | <A HREF="http://star.bawue.com"><A HREF="http://star.bawue.com</A">http://star.bawue.com</A</A>> -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
michael.renner@gmx.de wrote:
Hallo, ich suche eine Möglichkeit alle Dateien unterhalb des aktuellen Verzeichnisses nach einem bestimmten String zu durchsuchen (z.B. ltermcap) und durch einen anderen zu ersetzen (z.B. ncurses). Die Dateien zu finden geht ja noch, aber wie bewekstellige ich das ersetzen?
for i in /<pfad>/*; do sed 's/termcap/ncurses/' $i >/tmp/xxx mv /tmp/xxx $i done Henning -- H. Henning Vossieck - hhv@hhv.de - <A HREF="http://www.hhv.de/"><A HREF="http://www.hhv.de/</A">http://www.hhv.de/</A</A>> -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Hi, michael.renner@gmx.de wrote: ...
ich suche eine Möglichkeit alle Dateien unterhalb des aktuellen Verzeichnisses nach einem bestimmten String zu durchsuchen (z.B. ltermcap) und durch einen anderen zu ersetzen (z.B. ncurses).
tichworte: find, grep, xargs, sed for fn in `find . -type f| xargs grep -l "microsoft"` do echo "processing "$fn cat $fn | sed -e s/microsoft/linux/g > $fn.$$ mv $fn.$$ $fn done eine sicherung der dateien vor dem massentausch ist stets zu empfehlen :) bye Karl Esau (parakarl@rup.net) ___Windooze_is_bootiful -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
michael.renner@gmx.de schrieb:
ich suche eine Möglichkeit alle Dateien unterhalb des aktuellen Verzeichnisses nach einem bestimmten String zu durchsuchen (z.B. ltermcap) und durch einen anderen zu ersetzen (z.B. ncurses). Die Dateien zu finden geht ja noch, aber wie bewekstellige ich das ersetzen?
cd /verzeichnis/ for i in $(find -name "*"); do cat $i | \ sed 's/alter_string/neuer_string/g' \
$i.new ; mv $i.new $i ; done
geht nur für textdateien! Henry -- PGP-verschlüsselte Post willkommen, Schlüssel auf Anfrage oder vom Key-Server z.B. <A HREF="http://math-www.uni-paderborn.de/pgp/"><A HREF="http://math-www.uni-paderborn.de/pgp/</A">http://math-www.uni-paderborn.de/pgp/</A</A>> -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Henry Voigt wrote:
cd /verzeichnis/ for i in $(find -name "*"); do cat $i | \ sed 's/alter_string/neuer_string/g' \
$i.new ; mv $i.new $i ; done
- das find geht einfacher mit 'find .' - mensch sollte von der orig-datei noch ein .bak erstellen, damit mensch den urzustand rekonstruieren kann, wenn doch mal was schief läuft... - hidden-datein (.*) werden nicht erkannt dabei :( Mfg, Joerg. -- Henner & Bullinger, Datentechnik GbR | Tel.: +49 (7 11) 2 85 19 05 Linux, Netzwerke, Webhosting & Authoring | D2: +49 (1 72) 7 35 31 09 | Fax: +49 (7 11) 5 78 06 92 Geschäftsleitung, Perl/CGI, Support | <A HREF="http://star.bawue.com"><A HREF="http://star.bawue.com</A">http://star.bawue.com</A</A>> -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
Joerg Henner schrieb:
- das find geht einfacher mit 'find .' - mensch sollte von der orig-datei noch ein .bak erstellen, damit mensch den urzustand rekonstruieren kann, wenn doch mal was schief läuft... - hidden-datein (.*) werden nicht erkannt dabei :(
versteckte Dateien werden doch erkannt ?! henry@momomu:/home/henry > find . [viele dateien] ./.kde/share/applnk/apps/.directory ./.kde/share/applnk/.directory [viele dateien] ./postgress/equip/old/Hpdskjet.pdr ./postgress/formdemo.sql ./.pgaccessrc ./.xtvrc ./3-7654-2802-7.jpg ./.signature also besser cd /verzeichnis/ for i in $(find .); do cp $i $i.bak ; cat $i | \ sed 's/alter_string/neuer_string/g' > $i.new ; mv $i.new $i ; done Henry -- PGP-verschlüsselte Post willkommen, Schlüssel auf Anfrage oder vom Key-Server z.B. <A HREF="http://math-www.uni-paderborn.de/pgp/"><A HREF="http://math-www.uni-paderborn.de/pgp/</A">http://math-www.uni-paderborn.de/pgp/</A</A>> -- Um aus der Liste ausgetragen zu werden, eine Mail an majordomo@suse.com schicken, mit dem Text: unsubscribe suse-linux
participants (7)
-
h.vossieck@ndh.net
-
jhe@star.bawue.com
-
Michael.Mauch@t-online.de
-
michael.renner@gmx.de
-
parakarl@rup.net
-
vohe@medizin.uni-leipzig.de
-
volker.mueller@gmx.de