La línea de comando de Linux busca y reemplaza globalmente

Estoy tratando de buscar y reemplazar una cadena en todos los archivos que coinciden con grep en una máquina Linux. Tengo algunas piezas de lo que quiero hacer, pero no estoy seguro de cómo encadenarlas todas.

grep -n 'foo' * me dará salida en la forma:

[filename]:[line number]:[text]

Para cada archivo devuelto por grep, me gustaría reemplazar "foo" con "bar" y escribir el resultado en el archivo. ¿Hay una buena manera de hacer eso? Tal vez una tubería elegante?

Respuestas a la pregunta(8)

Su respuesta a la pregunta