linux下用正则表达式批量重命名

两百张图片辊[1-200].jpg(前面两字乱码)现在需要按原顺序重命名为[001-200].jpg是用rename吧,用mv也行啦,求脚本(刚刚看完li... 两百张图片 辊[1-200].jpg (前面两字乱码)
现在需要按原顺序重命名为[001-200].jpg
是用rename吧,用mv也行啦,求脚本(刚刚看完linux入门课程,win下的脚本套还用不了。。。)

系统是Ubuntu 14.04 LTS,rename版本是perl版的。
展开
 我来答
XoriieInpottn
2014-08-28 · TA获得超过494个赞
知道小有建树答主
回答量:153
采纳率:100%
帮助的人:158万
展开全部
先cd到放图片的文件夹,然后

rename "s/^[^\d]*//" *.jpg

这行命令的目的是把所有jpg后缀的文件名中,开头的非数字去掉,应该就能满足你的需要了吧
更多追问追答
追问
需要以文件名顺序排序,所以[1-200].jpg 要改为[001-200].jpg
追答

那我确实不知道有没有单条命令能搞定的了,不过办法肯定是有的,写个bash脚本就行:

#!/bin/bash

if [ $# -eq 0 ]
then
    echo "do not have src dir path"
    exit 1
fi

src=$(echo $1 | sed "s/\/$//g")

ls $src | while read line
do
    num=$(echo $line | grep "[0-9][0-9]*" -o)
    num=$(printf "%03d" $num).jpg
    #echo $src/$num
    #echo $src/$line
    mv $src/$line $src/$num
done

怎么执行你应该懂吧,参数就是文件夹,你试试看

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式