2012-01-18 17 views
12

Estaba en el proceso de crear una clase User donde uno de los métodos era get_privileges();.Cómo cambiar todas las apariciones de una palabra en todos los archivos en un directorio

Después de horas de golpear mi cabeza en el teclado, que finalmente descubrió que el codificador anterior que he heredado esta base de datos particular, deletrea la palabra "privilegios" como "privelages" en la base de datos MySQL, y por tanto también de todo el mundo en los cientos de archivos que tienen acceso a estos "privelages" se escribe de esa manera.

¿Hay alguna manera en Linux (Ubuntu Server ) que pueda ir a través de cada lugar en la carpeta /var/www y reemplazar "privelages" con "privilegios ", por lo que no tengo que tratar con este error tipográfico y el código a su alrededor?

Respuesta

27

Una variación que tenga en cuenta los subdirectorios (no probado):

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

Esto hará find todos los archivos (no directorios especificados por -type f) bajo /var/www, y realice un comando sed para reemplazar "privelages" con "privilegios" en cada archivo que encuentre.

+8

Gracias - para las personas en una Mac con BSD sed. Deberá agregar una extensión al argumento -i. Como tal: 'sed -i" "'s/prive ...' – xer0x

+0

Si solo desea ejecutar 'sed' en los archivos que contienen el error ortográfico (que querrá si su proyecto contiene miles de archivos) , puedes hacer 'grep -l -r 'privelages'/var/www | xargs -I "@" sed -i 's/privelages/privileges/g' @ ' –

+0

usando grep y luego sed probablemente sea peor que usar sed, ya que significa abrir y leer cada archivo dos veces – cegfault

5

mira esto: http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/

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

Muchas gracias, agradezco la respuesta. –

+1

Tendrá que agregar un 'encontrar', o usar un shell que le permita agrupar todos los archivos en todos los subdirectorios (sugerencia:' **/* 'lo hace en algunos shells) si desea recurse a los subdirectorios. Esta es una pregunta frecuente; buscar preguntas similares. Simpatías por tener que lidiar con un predecesor analfabeto ... – tripleee

Cuestiones relacionadas