buscar y reemplazar el comando para todo el directorio

buscar y reemplazar el comando para todo el directorio

¿Existe algún comando en Linux que encuentre una palabra en particular en todos los archivos en un directorio determinado y en las carpetas siguientes y la reemplace con una palabra nueva?

Respuesta1

Esto reemplazará en todos los archivos. Puede hacerse más específico si solo necesita un tipo específico de archivo. Además, crea un .bakarchivo de copia de seguridad de cada archivo que procesa, en caso de que necesite revertirlo. Si no necesita ningún archivo de respaldo, cámbielo -i.baka -i.

find /path/to/directory -type f -exec sed -i.bak 's/oldword/newword/g' {} \;

Para eliminar todos los archivos de respaldo cuando ya no los necesite:

find /path/to/directory -type f -name "*.bak" -exec rm -f {} \;

Respuesta2

Puede utilizar el siguiente comando:

grep -lR "foo" /path/to/dir | xargs sed -i 's/foo/bar/g'

Se utiliza greppara buscar archivos que contengan la cadena "foo" y luego invoca sed para reemplazar "foo" con "bar" en ellos. Como resultado, sólo se modifican aquellos archivos que contienen "foo". El resto de archivos no se tocan.

Respuesta3

No es un solo comando sino una combinación de varios:

find /home/bruno/old-friends -type f -exec sed -i 's/ugly/beautiful/g' {} ;

Ejemplo deaquí

Respuesta4

información relacionada