Buscar y replace text en todos los files de Git repo

Estoy trabajando en una biblioteca e hice un cambio importante. Todos mis proyectos importan github.com/retep-mathwizard/utils/src/... , pero he acortado mis proyectos a github.com/retep-mathwizard/utils/... Necesito encontrar cada ocurrencia comenzando en ~ , y replace todas las ocurrencias. ¿Hay alguna forma de hacer esto?

sed es tu amigo.

 $ sed -i 's_github.com/retep-mathwizard/utils/src_github.com/retep-mathwizard/utils_g' *.txt 

Donde *.txt es cualquier file de text que desee search / replace. Tenga en count que _ es importante. Se usa para separar los patrones en la function de búsqueda y reemploop, porque tiene tanto la alternativa estándar / separador como la que se usa con frecuencia - en su patrón. La opción -i.bak le indicará a sed que edite los files en su lugar, y saveá una copy de security con la extensión .bak .

Si los files están en muchos subdirectorys, necesitarás usar un combo como find y xargs .

 $ find ~ -name "*.txt" -print0 | xargs -0 sed -i.bak 's_github.com/retep-mathwizard/utils/src_github.com/retep-mathwizard/utils_g' 

Nuevamente, *.txt es lo que regex encontrará solo aquellos files en los que desee replace el text.

DESCARGO DE RESPONSABILIDAD : Como con cualquier cosa que involucre estas herramientas, primero debes probar esto en algo reemplazable o en una nueva twig de git.

EDITAR: Se eliminó la extensión en el indicador -i . Como se señala en los comentarios, todo está bajo el control de la fuente, por lo que debería estar bien realizar una edición in situ sin save un file de copy de security.

Este command busca todos los files en su directory de inicio, less los que están en sus carpetas .git :

 find ~ -type d -name '.git' -prune -o -type f -print 

Para replace todas las instancias de algo con otra cosa, podemos usar sed:

 sed 's|\(github\.com/retep-mathwizard/utils/\)src/|\1|g' filename 

Esto captura la parte que queremos conservar y la utiliza en la sustitución.

Combinando estos commands para recorrer todos sus files, usando el indicador -i para la edición en context (use -i '' para BSD sed / Mac OS) – reemplazamos la acción -print con -exec sed :

 find ~ -type d -name '.git' -prune -o -type f \ -exec sed 's|\(github\.com/retep-mathwizard/utils/\)src/|\1|g' {} \;