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

Bash, Shell, PHP, Python, Perl, CGI
st-cb
Posts: 46
Joined: 2002-05-09 11:56

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

Post 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
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

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

Post by captaincrunch »

Code: Select all

find /xxxxxx | xargs sed s/YYYY/ZZZZZZ/g
Nicht getestet, sollte aber so änhlich laufen.
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
dea
Posts: 532
Joined: 2002-08-13 12:05

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

Post 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]
st-cb
Posts: 46
Joined: 2002-05-09 11:56

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

Post 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
captaincrunch
Userprojekt
Userprojekt
Posts: 7066
Joined: 2002-10-09 14:30
Location: Dorsten

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

Post by captaincrunch »

Und ab ins Scripting ...
DebianHowTo
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
nimrod
Posts: 9
Joined: 2003-04-23 20:21

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

Post 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
thomas r
Posts: 16
Joined: 2005-09-13 12:08
Location: Wesel

Alle Dateien mit bestimmten Suchwort auflisten.

Post 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