dateiübergreifend ersetzen...
depp
- sonstiges
0 seth_not@home0 stareagle0 Skeeve
hi,
wie ging das mit grep gleich nochmal?
hab gegoogelt und immer nur die dumme seite gefunden, die behauptet, es ginge mit
find * | grep ".html" | rxr oldstr newstr
doch linux sagt mir, rxr not found.
bitte helft
gudn tach!
wie ging das mit grep gleich nochmal?
mit grep kann man nur finden, nicht ersetzen.
zum dateiuebergreifenden ersetzen verwende ich ein perl-script.
find * | grep ".html" | rxr oldstr newstr
rxr? hoert sich nach dateizugriffsrechten an. ein "standard-befehl" scheint es mir nicht zu sein.
prost
seth
Hallo,
kennt dein Linux event. replace?
Weitere Details findest du in der manpage, wenn replace vorhanden ist.
Gruß
Stareagle
Moin!
hab gegoogelt und immer nur die dumme seite gefunden, die behauptet, es ginge mit
find * | grep ".html" | rxr oldstr newstr
Die ist wirklich dumm!
1. bei find * wird "*" wird direkt im aktuellen Verzeichnis aufgelöst. Besser wäre find .
2. | grep ".html" ist Blödsinn, weil find das schon selbst (besser) erledigen kann. Zudem würde mit dem grep auch eine Datei "xyz.html.beispiel.txt" gefunden. find & grep zusammen in einem wäre:
find . -name \.html
Das findet Deien, die auf ".html" enden. Um das Verhalten von find | grep da oben nachzubilden nimmst Du
find . -name \.html\*
3. Da ich nicht weiß, was rxr macht, kann ich nur raten:
a) Die Ausgabe von grep ersetzen, dann mach statt rxr oldstr newstr
find . -name \.html | perl -pe 's/oldstr/newstr/g'
b) Die Dateien durchforsten, die find | grep ausgibt und darin ersetzen
find . -name \.html -print0 | xargs -0 perl -i.bak -pe 's/oldstr/newstr/g'
-- Skeeve