linux下对文件进行批量重命名

在使用DIGITS生成LMDB格式的数据时,发现训练样本和标签的命名不一样,比如对应image000.bmp的标签为image00_L.png,所以需要删除所有的“_L”,下面是自己写的一个脚本:
for name in /home/philochan/mydata/label/*
do
    filename=$(echo $name | grep 'L')
    if [ "$filename" != "" ]; then
        news=$(echo $filename | sed 's/^.*image//g' | sed 's/_L.*$/.png/g')
        echo image$news
	echo $filename
	mv $filename /home/philochan/mydata/label/image$news
    fi
done

注意:

设置变量时一定不要有空白,比如filename = $(echo $name | grep 'L')是不符合shell语法的


最关键的一条语句还是news=$(echo $filename | sed 's/^.*image//g' | sed 's/_L.*$/.png/g'),这里用到了sed这个管道命令,它可以将数据进行替换、删除、新增等功能,这里用到的是部分数据的查找并替换功能(以行为单位)

sed 's/要被替换的字符串/新的字符串/g'

.*是一个常用的正则表达式RE,表示任意字符(.表示任意一个字符,*表示重复字符)

grep -n 'g.*g' test.txt 得到含有g...g这个模式的行

^为行首字符,$为行尾字符

grep -n '^[a-z]' test.txt 得到开头是小写字符的那行




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值