depp: dateiübergreifend ersetzen...

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

  1. 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

  2. Hallo,

    kennt dein Linux event. replace?

    Weitere Details findest du in der manpage, wenn replace vorhanden ist.

    Gruß

    Stareagle

  3. 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