在git中批量重命名

  • 2011-09-09更新:为《学习Bash(第二版)》PDF手工加入书签。
  • 2011-09-20更新:加入《Learning.The.Bash.Shell.3rd》下载。

有一批形如 map_XXX.XXX 的文件,要改名为 map1_XXX.XXX 。如果使用其他改名工具改名,git 会认为是删除了这些文件,并要求将改名后的文件重新添加到版本库,这会无端的增加版本库的大小。

最好的办法当然是用git mv来处理。鼓捣了半小时,写了我的第一行BASH代码:

1for i in map*{jpg,xml};do git mv $i "map1${i:3}";done

说明:

  • map*{jpg,xml} 是只处理jpg和xml文件;
  • $i 是引用循环中的文件名,和 ${i} 的作用相同;
  • ${i:3} 返回文件名的第3至最后一个字符的字符串。

BASH真的很好玩,推荐两本书:

《高级 Bash 脚本编程指南》(Advanced Bash-Scripting Guide)

1 文件

上面这本书扫描的很不清晰,很多代码看不清,最好是对照英文版来看,下面是英文版下载:

1 文件