Recursivamente replace cadena en files

Quiero replace la barra invertida en la cadena page_path\example_filename.txt con una barra diagonal. También quiero poder ejecutar esto en un gran sistema de files y hacer que busque de forma recursiva todos los directorys.

Encontré a alguien en la web que me dijo que usara grep , xargs y sed pero no pude hacerlo funcionar. He estado probando diferentes variaciones en delimitadores y personajes de escape, pero no lo entendí.

Aquí está el command que estaba tratando de ejecutar:
grep -lr -e 'page_path\\' * | xargs sed -i 's/page_path\/page_path//g'

Gracias por adelantado.

También puedes usar find para eso:

 find /your/path -type f -exec grep -l 'page_path\\' {} \; -exec sed -i 's#page_path\\#page_path/#g' {} \; 

El segundo ejecutivo se ejecutará solo si el primero fue exitoso, y no tendrá problemas con los caracteres no imprimibles o que necesiten escaping en los nombres de los files.

Con grep | xargs grep | xargs , obtienes problemas con espacios en blanco en nombres de files. Puede evitar este problema usando: grep -lZr ... | xargs -0 sed ... grep -lZr ... | xargs -0 sed ... que utiliza cero bytes como delimitador.

Y ahora con respecto al command sed: El truco es que puedes usar en lugar de s/a/b/ cualquier otro personaje, por ejemplo, s#a#b# :

  sed -i 's#page_path\\#page_path/#g'