很早之前在论坛发过一个Windows批量重命名小工具,其实这类小工具还算挺多的:https://bbs.zsxwz.com/thread-264.htm
linux重命名文件可以用mv或者rename,安卓termux(不包括rename)也可以用。几个自己会用到的批量改名方法:
1、rename批量修改文件,支持正则表达式。当文件数量很多的时候,用rename还是比较合适的,效率会比mv高很多。
remane "s/旧名称/新名称/" 需要重命名的文件
比如需要重命名的几个文件:123.txt,124.txt,125.txt
rename "s/.txt$/.log/" *.txt # 批量修改后缀为log,$标记行尾 rename "s/$/.log/" *.txt # 批量添加后缀.log rename "s/^/zs/" *.txt # 批量加前缀zs,^标记行首 rename "s/^zs//" *.txt # 批量删除添加的前缀zs rename "s/AA/aa/" * # 批量大写转小写 rename 's/ /_/g' *.txt # 批量把把文件空格修改成_,比for加mv循环简单多了。 rename "s/[0-9]/zs$1/" *.txt # 匹配一个数字,批量替换。当然还有很多正则表达式,自己需要什么就用什么。
2、mv重命名也是比较常用,如果需要批量重命名,可以配合for循环使用。
mv 旧文件名 新文件名
比如需要重命名的几个文件:123.txt,124.txt,125.txt
想改成:zs1.log,zs2.log,zs3.log,添加统一前缀,修改后缀,添加序号这样的格式:
i=1; for name in `ls -ltr| awk '{print $NF}'|grep .txt`;do mv $name zs$i.log;let i=i+1;done # i=1,从1开始,也可以从其他序号开始。 # ls -ltr,按时间顺序列出文件,直接ls列出文件,容易改错名字。 # awk '{print $NF}' ,awk是按列打印,这是打印最后一列,就是文件名。 # grep .txt,查找.txt文件。有时候同一个文件夹里有其他文件,不希望改名。 # mv $name zs$i.log 修改文件名 # let i=i+1,开始循环批量改名。
3、如果你用的是zsh,也可以用zsh自带的重命名工具zmv,有时候也是比较方便也比较好理解的。
比如你想修改:zs1.log,zs2.log,zs3.log
改成:xwz1.txt,xwz2.txt,xwz3.txt
zmv '旧文件名' '新文件名'
autoload -U zmv # 加载zmv,默认不加载,推荐添加到zsh启动脚本里.zshrc zmv 'zs(*).log' 'xwz$1.txt' # (*)部分就是,新名$1部分。比较适合文件名中存在相同内容的文件,标记起来也方便,改起来也比较简单。
几个方法用好了,批量改名也都比较方便,但多多少少也存在一些不足之处,主要还是要看重命名成什么格式的,需要重命名的文件名称都有什么特点,改起来才知道用什么方法比较快速方便。