2012-01-18 27 views
12

Ero in procinto di creare una classe User in cui uno dei metodi era get_privileges();.Come modificare tutte le occorrenze di una parola in tutti i file in una directory

Dopo ore di sbattere la testa nella tastiera, ho finalmente scoperto che il coder precedente che ho ereditato questo particolare database scritto la parola "privilegi" come "privelages" nel database MySQL, e quindi anche in tutto il mondo nelle centinaia di file che accedono a questi "privilegi" è scritto in quel modo.

C'è un modo in Linux (Ubuntu Server ) che io possa passare attraverso ogni posto nella cartella /var/www e sostituire "privelages" con "privilegi", in modo che non ho a che fare con questo errore di battitura e codice attorno ad esso?

risposta

27

Una variante che tiene conto sottodirectory (non testata):

find /var/www -type f -exec sed -i 's/privelages/privileges/g' {} \; 

Questo sarà find tutti i file (non le directory, specificati dal -type f) sotto /var/www, ed eseguire un comando sed per sostituire "privilegelages" con "privilegi" su ogni file che trova.

+8

Grazie - per le persone su un Mac con BSD sed. Dovrai aggiungere un'estensione all'argomento -i. In questo modo: 'sed -i" "'s/prive ...' – xer0x

+0

Se si desidera eseguire 'sed' sui file che contengono l'errore ortografico (che si desidera se il progetto contiene migliaia di file) , puoi fare 'grep -l -r" privilegi "/ var/www | xargs -I "@" sed -i '/ privilegi/privilegi/g' @ ' –

+0

l'uso di grep e sed è probabilmente peggiore di quello che si usa sed, poiché significa aprire e leggere ogni file due volte – cegfault

5

Check this out: http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

cd /var/www 
sed -i 's/privelages/privileges/g' * 
+0

Grazie mille, apprezzo la risposta. –

+1

Dovrai aggiungere un 'find', o usare una shell che ti permetta di raggruppare tutti i file in tutte le sottodirectory (suggerimento:' **/* 'fa questo in alcune shell) se vuoi ricorrere alle sottodirectory. Questa è una FAQ; cerca domande simili. Simpatia per aver dovuto far fronte a un predecessore analfabeta ... – tripleee

Problemi correlati