Com trobar i reemplaçar text en diversos arxius des del terminal

Buscar i reemplaçar text pot ser una tasca senzilla utilitzant els editors de text més bàsics. Però, què passa quan és necessari fer aquesta mateixa tasca en diversos arxius a el mateix temps?

Bé, aquí la cosa es complica ... o no tant.


En el següent exemple, farem servir set per a substituir totes les ocurrències de la paraula «mongo» per la paraula «aurelio» en tots els arxius que tinguin l'extensió .txt i que es trobin a la carpeta / home / usuari / micarpeta /.

find / home / usuari / micarpeta / -name * .txt -exec set -i "s / mongo / aurelio / g" {} \;

Així de fàcil ...

Abans d'acabar, val la pena esmentar que alguns editors de text permeten realitzar aquesta operatòria utilitzant una interfície gràfica. Entre d'altres, cal destacar a jEdit, Geany, Regexxer, etc.


10 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   TSH va dir

    súper

  2.   Escèptic 0 va dir

    jo faig servir el Gedit

    1.    senyor va dir

      gedit per a múltiples arxius ??? com ???

  3.   van va dir

    Com podria posar un grep entremig ai?

    El que necessito és fer el següent, buscar dins de home tots els arxius que es diguin index.html i que continguin la paraula «XXXXXXX», i reemplaçar-ho amb «YYYYYYYYYY», com es podria fer perquè busqui només en els arxius que realment tinguin la string?

    Moltes Gràcies!

  4.   MelhorHospedagem va dir

    Jo ús el Gedit també, mes moltes gràcies

  5.   Àngel Garcia va dir

    Et falta l'argument per exec. El codi correcte seria:
    find / home / usuari / micarpeta / -name * .txt -exec set -i «s / mongo / aurelio / g» {} \;

    Una salutació 😀

    1.    usemoslinux va dir

      Tenés raó! Gràcies!
      Ja ho vaig corregir. : =)

  6.   gardo va dir

    Acabat de acabo de provar això (com ROOT):

    find / usr / share / icons / acyl-Allgray / -name * .svg -exec set -i «s / 666666/000000 / g» {} \;

    per canviar el color de tot un set de icones. La veritat que és una ordre molt poderós, normalment aquesta tasca m'hauria pres hores editant arxiu per arxiu.

  7.   Edmundo va dir

    Inserir text en diversos arxius, segons el nombre de la línia, en el meu cas línia 2 (2i), en centos linux

    find / home // public_html / res / -name -exec set -i «2i \;» {} \;

    1.    Edmundo va dir

      no va sortir tot el codi aixi que reenviament:

      find / home / user / public_html / res / -name nombrearchivo.ext -exec set -i «2i \ text a inserir» {} \;