GNU/Linux >> Tutoriales Linux >  >> Linux

¿Hay un 'git sed' o equivalente?

Aquí hay una solución que combina las de Noufal y Claytontstanley y evita tocar archivos que no cambiarán.

En el [alias] bloque de mi ~/.gitconfig archivo:

psed = !sh -c 'git grep --null --full-name --name-only --perl-regexp -e \"$1\" | xargs -0 perl -i -p -e \"s/$1/$2/g\"' -

Para usar:

git psed old_method_name new_method_name

Gracias a Noufal y Greg por sus publicaciones. Combiné sus soluciones y encontré una que usa git grep (más robusto que git ls-files para mi repositorio, ya que parece enumerar solo los archivos que tienen código src real en ellos, no carpetas de submódulos, por ejemplo), y también tiene el nombre del método anterior y el nombre del nuevo método en un solo lugar:

En el [alias] bloque de mi ~/.gitconfig archivo:

sed = ! git grep -z --full-name -l '.' | xargs -0 sed -i -e

Para usar:

git sed 's/old-method-name/new-method-name/ig'

Podrías usar git ls-files en combinación con xargs y sed :

git ls-files -z | xargs -0 sed -i -e 's/old-method-name/new-method-name/g'

Podrías hacer un

for i in $(git grep --full-name -l old_method_name)
do
 perl -p -i -e 's/old_method_name/new_method_name/g' $i
done

pegue eso en un archivo en algún lugar y luego alias como git sed en tu configuración

Actualización: El comentario de tchrist a continuación es una solución mucho mejor ya que evita que perl se reproduzca repetidamente.


Linux
  1. ¿Existe un equivalente a .Net FileSystemWatcher en el mundo de Linux?

  2. equivalente de Windows de inet_aton

  3. ¿Hay STDCALL en Linux?

  4. fallocate() comando equivalente en OS X?

  5. ¿Existe un equivalente de Linux de Programmer's Notepad o Notepad ++?

Cómo cambiar de rama en Git

Tutorial avanzado de Git

Git Autocompletar?

Fedora:¿hay un servicio de Ppa equivalente en el mundo de Fedora?

¿Hay algún equivalente de WinSCP para Linux?

¿Existe un directorio equivalente a /dev/null en Linux?