Git cambia un montón de files (imágenes) a minúsculas

Obtuve 100 imágenes que necesitaba cambiar el nombre de .JPG a .jpg. Ya escribí una tarea de gulp y les cambié el nombre a todos. Ahora Git no está reconociendo el cambio.

Encontré esto en files individuales: cambio las mayúsculas de un directory y Git no parece captarlo

Pero no quiero hacer esto en cada image a mano, ¿es posible usar el s.th. Me gusta esto

git mv **/*/.JPG **/*.temp

git mv **/*/.temp **/*.jpg

Las imágenes están todas en diff. carpetas! Por ejemplo, src/a, src/a/b src/b ...

Hay un pequeño cambio en la respuesta dada por @jvdm para que el primer fragment de código funcione.

 for line in $(find -type f -name '*.JPG' | sed 's@\(.*\)\.JPG@\1.JPG \1.jpg/') do git mv $line done 
 for line in $(find -type f -name '*.JPG' | sed 's@\(.*\)\.JPG@\1.JPG \1.jpg/') do git mv $line done 

Si ya renombró sus files, solo tiene que git add . Como no han cambiado, git notará que todos tienen el mismo object blob y configurará el cambio de nombre . Si no tiene otros files desconocidos o modificados en su directory de trabajo de git, una forma posible es:

 for path in $(git status --porcelain | sed 's/.. //') do git add "$l" done 

Esto funciona:

 for file in $(git ls-files '*.JPG'); do git mv -f $file $(echo $file |sed 's/\.JPG/\.jpg/'); done 
  • git ls-files enumera todos los files => '*.JPG' filters
  • git mv -f mueve los files (-f = force, que es obligatorio)
  • $file devuelve el nombre de file original
  • $(echo $file |sed 's/\.JPG/\.jpg/') es el nuevo nombre de file

Hilos útiles:

git renombrar muchos files y carpetas

Cómo cambiar el nombre de una gran cantidad de files