本文是Linux Shell脚本系列教程的第(十二)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上两篇文章Linux Shell系列教程之(十)Shell for循环和Linux Shell系列教程之(十一)Shell while循环中,我们已经对Shell…
July 4, 2019
shell命令行下批量重命名文件, 批量修改文件名, 批量替换文件名, command
有一批名称格式相同文件需要重命名成另一种格式,例如“image_0_small.png”批量修改为“image_0_large.png”,用命令行可以轻松完成,下面就来介绍三种不同的解决方法。
方法1:for循环+mv命令
for i in `ls image*small.png`; do mv $i ${i%small.png}large.png done
在上面的三行代码中,首先用ls image*small.png通配筛选出了需要重命名的文件,避免将目录中其他格式的文件也进行重命名;然后对每一个文件执行mv操作,${i%small.png}是匹配并删除$i后面的small.png,然后补上large.png就行了。
方法2:rename一行搞定
上面这个重命名任务如果使用rename来完成,只需要这一行代码:
rename "s/small/large/" image_*.png
rename命令是Linux自带的一个重命名工具,上面这个用法传入了两个参数,前一个参数"s/small/large/"
代表文件名中要替换的部分,后一个参数image_*.png
代表通配文件名的规则。
rename命名在mac下需要另外安装。
brew install rename
用法:
rename -n -e 's/_.*_/_/' *.png
方法3:zsh独有的zmv
如果你用的shell是zsh,那么还可以试试zsh自带的重命名工具zmv。zmv除了可以像rename一样一行搞定批量重命名之外,命令的参数也比rename更容易理解一些,上面的任务用zmv处理起来是这样做的:
zmv 'image_(*)_small.png' 'image_$1_large.png'
zmv看起来会比rename要直观一些,第一个参数'image_(*)_small.png'
是待替换的文件名,其中(*)
是通配规则,第二个参数'image_$1_large.png'
是替换后的文件名。
另外需要注意,zsh并不是一启动就可以直接使用zmv命令,需要先执行:
autoload -U zmv
为了方便可以把上面这一行加载zmv的代码放到~/.zprofile
中。
更多参考:
本文:shell命令行下批量重命名文件, 批量修改文件名, 批量替换文件名, command