批量重命名文件

下载了《生活大爆炸》打算重温,但是文件名实在是太过长了啊,受不了啊!

  1. charles@TCRMBP➜  Season03  ls
  2. 生活大爆炸.The.Big.Bang.Theory.S03E01.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  3. 生活大爆炸.The.Big.Bang.Theory.S03E02.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  4. 生活大爆炸.The.Big.Bang.Theory.S03E03.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  5. 生活大爆炸.The.Big.Bang.Theory.S03E04.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  6. 生活大爆炸.The.Big.Bang.Theory.S03E06.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  7. 生活大爆炸.The.Big.Bang.Theory.S03E07.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  8. 生活大爆炸.The.Big.Bang.Theory.S03E08.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  9. 生活大爆炸.The.Big.Bang.Theory.S03E09.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  10. 生活大爆炸.The.Big.Bang.Theory.S03E10.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  11. 生活大爆炸.The.Big.Bang.Theory.S03E11.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  12. 生活大爆炸.The.Big.Bang.Theory.S03E12.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  13. 生活大爆炸.The.Big.Bang.Theory.S03E13.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  14. 生活大爆炸.The.Big.Bang.Theory.S03E14.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  15. 生活大爆炸.The.Big.Bang.Theory.S03E15.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  16. 生活大爆炸.The.Big.Bang.Theory.S03E16.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  17. 生活大爆炸.The.Big.Bang.Theory.S03E17.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  18. 生活大爆炸.The.Big.Bang.Theory.S03E18.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  19. 生活大爆炸.The.Big.Bang.Theory.S03E19.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  20. 生活大爆炸.The.Big.Bang.Theory.S03E20.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  21. 生活大爆炸.The.Big.Bang.Theory.S03E21.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  22. 生活大爆炸.The.Big.Bang.Theory.S03E22.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4
  23. 生活大爆炸.The.Big.Bang.Theory.S03E23.Chi_Eng.HDTV-PSP.480x272-YYeTs人人影视.mp4

如上,在命令行下怎么批量重命名,去掉“生活大爆炸.The.Big.Bang.Theory.”部分,只留下后面部分呢?其实以前我也查找过类似的shell命令,但是每次都不记得,这次所幸写个文章记录下来。

  1. for filename in <code>ls | grep "生活大*"</code>;
  2. do
  3.     mv $filename <code>echo $filename|cut -c 27-</code>;
  4. done

上面,第一行和第三行的分号,不是必须的,本来这个指令,可以写在一行里面,所以有分号,这里为了看方便,格式化了一下。

这个例子,只是去除了文件名的前缀,功能就是把前27个字节去掉,如此而已,如果有别的需求,可以在这个基础上自由发挥。