¿Hay alguna forma de ejecutar una búsqueda recursiva de prueba y reemplazar usando sed
? , antes de ejecutarlo? Solo quiero imprimir los resultados antes de hacer la búsqueda y reemplazar. Algo así como hacer eco de los resultados de,
grep -rl term1 . |xargs sed -i -e 's/term1/term2/'
Respuesta aceptada:
Podría ejecutar sed
sin -i
y avance a través de la salida con less
grep -rl --null term1 . | xargs -0 sed -e 's/term1/term2/' | less
Luego ejecuta sed
con -i.bak
para crear copias de seguridad que puede diferenciar después
grep -rl --null term1 . | xargs -0 sed -i.bak -e 's/term1/term2/'
diff somefile.bak somefile
# verify changes were correct
Editar: Como se sugiere en el comentario, use grep --null | xargs -0
. Esto hace que los nombres de archivo terminen con el byte nulo, lo que lo hace seguro para los nombres de archivo con caracteres inusuales como nueva línea. Sí, n
es un carácter válido en un nombre de archivo unix. Los únicos caracteres prohibidos son la barra inclinada /
y el carácter nulo