Con un GNU sed:
find . -type f -print0 | xargs -0 sed -i /KeyWord/d
Con un OSX sed:
find . -type f -print0 | xargs -0 sed -i '' /KeyWord/d
El primer comando find
encuentra todos los archivos estándar (no directorios, tuberías, etc.), los imprime separados por \0
(para que los nombres de los archivos puedan contener espacios, líneas nuevas, etc.).
El segundo comando xargs
lee la salida de find
, toma una lista basada en un separador ( \0
debido a -0
), invoca sed -i [...]
con parámetros agregados de la lista ( sed
se llamará varias veces si hay muchos archivos, ya que la longitud máxima de los parámetros está limitada en cada invocación).
El sed
comando modifica in-place ( -i
).
En cuanto a /KeyWord/d
, eliminará las líneas que contienen la expresión regular KeyWord
.
Debería aprender sed
a comprender correctamente la sintaxis (simple pero inusual) y consultar las páginas de manual correspondientes para obtener más información sobre las herramientas involucradas aquí.
Y como me gusta promocionar zsh
, la solución con sus globos extendidos:
sed -i /KeyWord/d **/*(.)