GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo reemplazar todas las apariciones de una palabra en todos los archivos en la línea de comandos de Linux

Pregunta :¿Cómo reemplazo todas las ocurrencias de una palabra en todos los archivos en la carpeta dada?

Considere un escenario problemático en el que tiene un sitio web en el que a menudo hace referencia al año en curso. Cada año es necesario actualizar el año. Puede encontrar fácilmente todas las ocurrencias en todos los archivos, pero debe evitarse cambiar manualmente el año, uno por uno, en cada archivo.

Solución

¿Entonces, Qué haces? Una de las varias formas de encontrar todas las ocurrencias y luego reemplazar el término buscado es usando una combinación de comandos find y sed.

Puede hacerlo fácilmente con un solo comando:en este ejemplo, tiene 50 páginas web en la carpeta de páginas. Este comando cambiará instantáneamente todas las apariciones de "2017" a "2018":

find ~/public_html/my_website/pages -type f -exec sed -i 's/2017/2018/g' {} \;

Para que el ejemplo anterior sea un poco más genérico, esto es lo que debe hacer:

find <path_to_directory> -type f -exec sed -i 's/<search_text>/<replace_text>/g' {} \;

En el comando anterior, reemplace , y con los datos reales.

Explicación

Lo que está haciendo aquí es que está utilizando el comando de búsqueda para obtener todos los archivos en los directorios actuales y sus subdirectorios. La opción -type f se asegura de que solo obtenga archivos, no directorios.

Y luego pasa el resultado usando el comando exec al comando sed. El comando sed busca el texto y lo reemplaza.

Él {} \; es parte del comando exec. El espacio entre } y \ es obligatorio.

Este consejo rápido de Linux fue sugerido por Lector del Manual de Linux, Jane Hadley. ¿Tienes una mejor solución para este problema? Compártelo en los comentarios.


Linux
  1. Cómo encontrar archivos con el comando fd en Linux

  2. Cómo usar el comando find de Linux para buscar archivos

  3. Comando de Linux:¿Cómo 'buscar' solo archivos de texto?

  4. ¿Cómo encontrar todos los archivos que terminan en .rb con Linux?

  5. Cómo cambiar todas las apariciones de una palabra en todos los archivos de un directorio

Cómo encontrar archivos en Linux

Cómo encontrar archivos en Linux con el comando Buscar

Cómo buscar archivos desde la línea de comandos de Linux

Cómo encontrar archivos con el comando fd en Linux

Cómo encontrar la dirección IP en la línea de comandos de Linux

Cómo encontrar carpetas en Linux