直接在终端中输入rename+[Enter]可以看到该命令的格式:
早期版本的rename是C语言版本,如今新的Ubuntu中采用的都是perl版本,功能更加强大
Usage:rename [-v] [-n] [-f] perlexpr [filenames]
-v(verbose)打印被成功重命名的文件
-n(no-act)只显示将被重命名的文件,而非实际进行重命名操作
-f(force)覆盖已经存在的文件
perlexprPerl语言格式的正则表达式
files需要被替换的文件(比如*.c、*.h),如果没给出文件名,将从标准输入读
常用的参数是-n
,可以先用-n参数对一部小部分图片进行测试,每次执行命令会在terminal中把效果列出来,等确保没问题后去掉-n
参数,再对全部数据进行统一处理。
此次应用是为了批量重命名一批图片文件(自己的图片数据,作为caffe训练和测试数据使用)
本来全部都是这种格式:
(1).jpg
(2).jpg
…..
要改为:
test_001.jpg
test_002.jpg
……
用了比较笨的办法:先把括号去掉,再统一改格式(假定图片文件存放在terminal打开的当前目录位置)
1、去掉括号
rename -n 's/[()]//g' *.jpg
解释:
-n直接打印结果在终端中而非实际执行
引号中是perl的正则表达式,用来匹配和替换,s代表substitution,替换的意思
[()]代表匹配[]中的内容
//两个斜杠之间是空代表替换为空的内容,相当于删除
g代表全部匹配,不加g的话默认只会匹配一个括号
此处的效果类似,是将文件名中的下划线以及数字3,看图中效果应该就明白了:
2、继续重命名为想要的格式
rename -n 's/^/test_/' *.jpg
解释:
s-替换
^-在文件名称开头加字符
test_-将名称前面添加上test_
效果如下:
更详细的rename命令参考:
http://blog.chinaunix.net/uid-9112803-id-2377271.html