搬迁一篇旧文,原载于我我的搭建的博客网站,体验下博客园的编辑器和展现效果。html
海贼王OnePiece动画连载已近800集,因为以前是从不一样渠道(汉化组、动漫论坛等)下载的,文件命名规则自成一套体系。
对于有轻度收集癖和强迫症的我来讲,进行分类管理以及命名规则的统一,蓄谋已久。正则表达式
It's time!编辑器
1. 经过Homebrew安装rename
2. 分析文件对象特征,补充知识
3. 研究成果展现及拆解学习
MacOS未自带rename命令,遂经过Homebrew安装:动画
brew install rename
按所查资料得知, rename 的参数用法与 sed 类似,结果研究半天后发现不彻底一致,后来发现,安装的rename是用Perl写的,所以研究了下Perl的正则表达式,顺便学习了下各种正则的差别(连接见文末参考文档)。网站
虽然各源的文件命名方式千奇百怪,但其中仍是有一些共同特征的:spa
同时进行的查阅资料、学习的过程,在此不表....net
先上结果:unix
rename 's/\D*(\d+-?\d+).*\.(\w+)$/OnePiece-$1.$2/' *
释义:将当前目录下全部文件按正则表达式的规则进行重命名code
正则部分含义拆解:
s/ // 替换模式 \D*(\d+-?\d+).*\.(\w+)$ // 需被替换的字符串 / // 分隔符(固定) OnePiece-$1.$2 // 新的字符串 / // 结束符
Part1.继续拆解 \D*(\d+-?\d+).*\.(\w+)$ :
\D* // 任意多的非数字字符 (\d+-?\d+) // 连续的数字,可能存在'-'(如:251-252,两集连播) .* // 任意多的字符 \.(\w+)$ // 得到文件扩展名(以‘.英文字母’结尾,如:.mp4 或 .rmvb)
Part2.继续拆解 OnePiece-$1.$2 :
OnePiece- // 普通字符串,从新命名的固定前缀 $1 // 获取第一个'()'内的字符串,即:文件的编号 . // 普通字符‘.’ $2 // 获取第二个'()'内的字符串,即:文件扩展名
[Perl的正则表达式][http://www.chinaunix.net/old_jh/25/159388.html]
[Linux Shell 正则表达式(BREs,EREs,PREs)差别比较][http://blog.csdn.net/fdl19881/article/details/7800877]