Page 1 of 1

einen teil von dateien gloabel ersetzen - ist das möglich

Posted: 2003-04-27 10:03
by st-cb
hallo,

ich muss in einigen meiner kundenordner etwas ändern, damit ich jetzt nicht etliche dateien per hand ändern muss wollte ich es automatisiert haben.

in etwas so: ersetze im ordner "xxxxx" den inhalt aller dateien welcher "YYYY" entspricht durch "ZZZZZZ"


geht das?


christian

Re: einen teil von dateien gloabel ersetzen - ist das möglich

Posted: 2003-04-27 10:28
by captaincrunch

Code: Select all

find /xxxxxx | xargs sed s/YYYY/ZZZZZZ/g
Nicht getestet, sollte aber so änhlich laufen.

Re: einen teil von dateien gloabel ersetzen - ist das möglich

Posted: 2003-04-27 10:30
by dea
grep, find und sed sollten Deine Freunde sein. Die Manpages dazu sind umfangreich und aufschlussreich, zudemm kannst Du über unser aller Freund Herrn Google auch noch massenhaft zusätzliche Informatioinen und HOWTOs bekommen, schließlich ist das was Du da vorhast lediglich ein technisches Kavaliersdelikt ...

[edit]
Und weil der Käpt'n chown wieder schneller war als meiner einer, hier noch eine kleine Vorgehensweise:

1. mit find und grep die betroffenen Dateien suchen und die Pfade in eine Parameterdatei schreiben, in etwa so:

Code: Select all

find /home -type f -exec grep "Suchmuster" {} ; >> Param.file
Die Ausgabe müsste noch um störende "Nebengeräusche" bereinigt werden ...
2. mit sed dann die Parameterdatei abgraben und die Ersetzungen vornehmen, in etwa so:

Code: Select all

for datei in $(cat Param.file)
do
  sed -e '1,$s/<Suchmuster>/<Ersetzung>/g' < ${datei} > ${datei}.bkp
  mv ${datei}.bkp ${datei}
done
Wenn Du das ganze in ein Skript packst hast Du es auch später noch parat - wie gesagt, sowas sind ganz alltägliche Aufgaben :D

Ach - und einen noch für den Käpt'n :wink:
So wie Du das schreibst, wird der gute alte sed lediglich das erste Vorkommen ersetzen, da Du es versäumt hast ihm zu sagen, das er von der ersten '1' bis ',' zur letzten '$' Zeile alle Vorkommen '/g' ersetzen soll

Ist das nicht eher was für's Scripting-Board? ...
[/edit]

Re: einen teil von dateien gloabel ersetzen - ist das möglich

Posted: 2003-04-27 11:25
by st-cb
danke erstmal

wie kann ich die zeile vom CaptainCrunch so abändern das alle vorkommen einer datei geändert werden? evtl mit einbeziehung aller unterverzeichnisse.

mehr brauche ich eigentlich nicht - dann ist es auch kein skript ;-)


christian

Re: einen teil von dateien gloabel ersetzen - ist das möglich

Posted: 2003-04-27 11:39
by captaincrunch
Und ab ins Scripting ...

Re: einen teil von dateien gloabel ersetzen - ist das möglich

Posted: 2003-04-27 21:55
by nimrod
Hatte vorhin nen ähnliches Problem und hab mir folgendes zusammengeflickt, um Unterverzeichnisse in allen Homedirs anzulegen, was aus skel zu kopieren und die Rechte zu setzen. Vielleicht brauchts ja noch jmd.

Code: Select all

for name in $(ls /home/. | awk -F ' ' '{print $1}') 
do 
  mkdir /home/${name}/.spamassassin
  cp /etc/skel/.spamassassin/user_prefs /home/${name}/.spamassassin/
  chown -R ${name}.${name} /home/${name}/.spamassassin
done

Alle Dateien mit bestimmten Suchwort auflisten.

Posted: 2005-09-16 12:40
by thomas r
Danke Dea,

für die for-Schleife, mir war die Syntax gerade nicht geläufig.
Die 'Nebengeräusche' bekommt man so weg ...

Code: Select all

grep -slr "komm_Pfiffi_such" . >> Param.file
-s für silent
-l listet Dateinamen auf
-r rekursiv durch die Verzeichniss

Dann kann man sich das find -type f sparen ;-)

*bg*

Thomas