Linux 下批量重命名

2017-06-05 Lu Huang 更多博文 » 博客 » GitHub »

linux

原文链接 https://hlthu.github.io/2017/06/05/linux-rename-batch.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


我们做机器学习的,首先需要对数据进行处理,但是一般我们拿到的数据的命名常常不是符合自己的需求的,因此通常需要重命名,一个两个文件还好,一堆成千上万自己手动改可能就不好了,这里简单介绍一下如何在 Linux 下完成对数据的批量重命名。

假设有这么一批数据

huanglu@DeepNet1:~/test$ ls
I5019_N11.jpg   I5160_N119.jpg  I5213_N68.jpg   I5679_N13.jpg
I5057_N75.jpg   I5174_N96.jpg   I5343_N120.jpg  I5733_N52.jpg
I5148_N103.jpg  I5192_N81.jpg   I5415_N29.jpg

我们需要命名为 pos_序号_train.jpg的形式,可以使用下面的命令:

huanglu@DeepNet1:~/test$ i=1
huanglu@DeepNet1:~/test$ for x in ./*.jpg; do mv "$x" "pos_${i}_train.jpg"; i=`expr $i + 1`; done

注意 expr $i + 1 里的空格必须要有。重命名完的数据如下:

huanglu@DeepNet1:~/test$ ls
pos_10_train.jpg  pos_2_train.jpg  pos_5_train.jpg  pos_8_train.jpg
pos_11_train.jpg  pos_3_train.jpg  pos_6_train.jpg  pos_9_train.jpg
pos_1_train.jpg   pos_4_train.jpg  pos_7_train.jpg