GNU/Linux >> Tutoriales Linux >  >> Linux

Búsqueda recursiva y reemplazo en archivos de texto en Mac y Linux

Para Mac, un enfoque más similar sería este:

find . -name '*.txt' -print0 | xargs -0 sed -i "" "s/form/forms/g"

Como solución alternativa, estoy usando esta en Mac OSX 10.7.5

grep -ilr 'old-word' * | xargs [email protected] sed -i '' 's/old-word/new-word/g' @

El crédito es para:la respuesta de Todd Cesare


OS X usa una combinación de herramientas BSD y GNU, por lo que es mejor que consulte siempre la documentación (aunque la tenía en less ni siquiera se ajustaba a la página de manual de OS X):

https://web.archive.org/web/20170808213955/https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/sed.1.html

sed toma el argumento después de -i como la extensión para copias de seguridad. Proporcione una cadena vacía (-i '' ) sin copias de seguridad.

Lo siguiente debería hacer:

find . -type f -name '*.txt' -exec sed -i '' s/this/that/g {} +

El -type f es solo una buena práctica; sed se quejará si le das un directorio o algo así.

-exec se prefiere sobre xargs; no necesitas molestarte con -print0 o cualquier cosa.

El {} + al final significa que find agregará todos los resultados como argumentos a una instancia del comando llamado, en lugar de volver a ejecutarlo para cada resultado. (Una excepción es cuando se infringe el número máximo de argumentos de línea de comandos permitidos por el sistema operativo; en ese caso, find ejecutará más de una instancia).

Si obtiene un error como "secuencia de bytes no válida", podría ser útil forzar la configuración regional estándar agregando LC_ALL=C al comienzo del comando, así:

LC_ALL=C find . -type f -name '*.txt' -exec sed -i '' s/this/that/g {} +


Linux
  1. Uso de sed para buscar y reemplazar archivos de texto en Linux

  2. Uso de los comandos Sed, ex y perl para buscar y reemplazar un texto en Linux

  3. Utilice Buscar y localizar para buscar archivos en Linux

  4. Linux Eliminar archivos y directorios

  5. Línea de comando:busque y reemplace en todos los nombres de archivo que coincidan con grep

Cómo comparar y fusionar archivos de texto en Linux

Cómo comparar y fusionar archivos de texto en Linux (parte 2)

Cómo encontrar archivos que contengan una cadena de texto específica en Linux

Comparta archivos fácilmente entre Linux, Windows y Mac usando NitroShare

Linux busca cadenas en carpetas y archivos con ack

Buscar y reemplazar MySQL