Cercar i canviar text dins un caramull d’arxius

Canviar la mateixa paraula (o frase) per una altre dins una bona quantitat d’arxius, pot ser una feinada. Caldria obrir-los tots i usar l’eina de reemplaçar que portés l’editor de torn. Hi deu haver –ara mateix no se quin– qualque editor amb el concepte «projecte» que permeti fer els canvis a tots els arxius que formen el projecte.

Si uses el sistema operatiu GNU amb Linux, basta que tenguis el comandament find i el llenguatge Perl instal·lats. Una combinació de les dues coses servirà per a fer un canvi global de text. A l’exemple canviem l’adreça de correu josep@nose.com per josep.cansat@de-spam.nose.com

find ./ -type f -name '*.html' -exec perl -pi -e 's/josep\@nose.com/josep.cansat\@de-spam.nose.com/;' {} \;

Cercarà dins els arxius que diguis a través del comandament find: en aquest cas, tots els regulars (-type f) que tenen el nom acabat en .html (-name '*.html') i que estan a partir del directori on ens trobam (./). Find només troba arxius pel seu nom, no en fa els canvis. El passa –el nom– al comandament que ve darrere -exec, el perl en aquest cas, mitjançant els claudators ({}) i tanca l’ordre amb «;».

L’ordre principal pel perl és 's/text a llevar/text a posar/;'. A l’exemple, cal dir que les ensaïmades (@) són part del text o perl les ignorarà. S’aconsegueix amb una barra invertida (\) i a l’acció se li sol dir «escapar», en aquest cas cal «escapar les ensaïmades» 🙂

Si l’arxiu conté més d’un pic la paraula a canviar, l’ordre Perl les tindrà totes en compte.

Per a més detalls:

El comandament find és immens. Trobaràs més informació a les planes de manual que pots cridar amb el comandament man find o llegint aquest article d’about.com. Si tens un calendari lunar a mà, find té opcions abastament com per canviar només els arxius que hagis creat (que no modificat) en lluna plena.

Perl és un llenguatge de programació també carregat de possibilitats i si en vols aprendre més, el millor és un bon llibre. A ca’n O’Reilly en trobaràs. En línia hi ha un grapat de llocs, com perl.com (també d’O’reilly), Perl Mongers o Perldoc.com.

Entrades relacionades

2 Comentaris

  1. Pingback: Bitassa a lloure - Bloc de Benjami Villoslada » La línia de comandaments

  2. Pingback: EnGuillem! » Blog Archive » Substituir cadenes en fitxers

Deixa un comentari