¿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