在git中批量重命名

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:在git中批量重命名
  • 本文链接:http://zengrong.net/post/1236.htm

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

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

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

for 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)

  学习Bash第二版(完美书签) (5.1 MiB, 1,513 hits)

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

  Learning.The.Bash.Shell.3rd (714.3 KiB, 1,174 hits)