Come posso fare una sostituzione di stringa con una altra stringa in TUTTI i file presenti in una cartella (e sottocartelle)..?
Come posso fare una sostituzione di stringa con una altra stringa in TUTTI i file presenti in una cartella (e sottocartelle)..?
da terminale: «sed s/<testo>/<nuovotesto>/g *.txt». Al momento non mi viene come farlo fare a tutte le sottocartelle, ergo devi farlo a mano. Fai un backup dei file prima.
non manca un -i per l'edit in place ? e per fare tutti i file, si può usare con find ... -exec ...
Scusami non ho capito.. mi potresti fare un esempio?Originalmente inviato da dreadnaut
man find sia la tua guida
cerchi i file nella directory corrente (e sotto-) con find . -name <pattern> -exec <comando> e come comando usi la riga suggerita sopra, cioé sed con un'espressione regolare per sostituire la stringa. Per usare sed, man sed
sed -i.bak s/stringa/sostituzione/g nomefile .bak è il suffisso che vuoi aggiungere alla copia di backup che sed può fare in automatico.
tutto assieme, qualcosa del genere:dove {} verrà sostituito da find man mano, con tutti i nomi di file trovati, e ';' serve a chiudere il comando sed, senza chiudere il find :-)Codice:find . -name *.php -exec sed -i.bak s/perchè/perché/g {} ';'
ah, dove man non basta, spesso info aiuta
edit: il simboletto di icq del tuo account, è una reliquia o funzia ?
Ultima modifica di dreadnaut : 03-03-2007 alle ore 17.27.50
Ti ringrazio sei stato molto esauriente ma... quanto è complicato...
P.S. : L'account ICQ ce l'ho ancora ma non lo uso praticamente mai.. Ho GAIM ben configurato ma prefesco usare aMSN..
hahahahahaahahaha (etc), no questo non è complicato, c'è di molto peggioOriginalmente inviato da attorianzo