对于批量去除文件名字结尾的.bak, 自己经历了几个阶段: 1 最早自己用 linux 时,批量改文件似乎是用 shell 脚本来改 2 慢慢的发现可以用管道含有 awk 的命令行来做 3 后来发现可以用带 while 的命令行来做: ls *.bak | while read a; do mv $a ${a%.bak}; done 4 后来发现个好用的命令 xargs,这几年一直都是这样用的: ls *.bak | sed 's/.bak$//' | xargs -n 1 -i mv {}.bak {}
今天偶然点开个网页,发现 rename 竟然支持正则表达式批量改名(perl 形式的正则表达式)!!! 所以就非常简单了,rename 's/.bak//' *.bak 另外,更强大的是,比如有需求,把 aba, aca 这样的文件,变成 a_b_a, a_c_a 用 rename 也非常简单:rename 's/a([a-z])a/a_$1_a/' a?a
哎,又一次深刻体会了一个道理:很多好东西(工具,或规律),总是存在的,只是自己没有发现。一旦你发现这个工具(或规律),做事情就会变大事半功倍