概述:在日常工作中,我们经常需要对一批文件进行重命名操作,例如将所有的jpg文件改成bnp,将名字中的1改成one,等等。文本主要为你讲解如何实现这些操作
rename
Usage:
rename [options] expression replacement file...
Options:
-v, --verbose explain what is being done
-s, --symlink act on symlink target
-h, --help display this help and exit
-V, --version output version information and exit
最简单的用法:
$ ls
CB-0_PC13.txt CB-13_PC13.txt CB-17_PC13.txt CB-20_PC13.txt CB-2_PC13.txt CB-6_PC13.txt PC_16_3_29rankgenes.txt
CB-10_PC13.txt CB-14_PC13.txt CB-18_PC13.txt CB-21_PC13.txt CB-3_PC13.txt CB-7_PC13.txt
$ rename CB BM *
$ ls
BM-0_PC13.txt BM-13_PC13.txt BM-17_PC13.txt BM-20_PC13.txt BM-2_PC13.txt BM-6_PC13.txt PC_16_3_29rankgenes.txt
BM-10_PC13.txt BM-14_PC13.txt BM-18_PC13.txt BM-21_PC13.txt BM-3_PC13.txt BM-7_PC13.txt
更多用法:
1、删除所有的 .bak 后缀:rename 's/\.bak$//' *.bak
注意,这个命令的格式组织如下:s/.bark$/ / 是s/para1/para2/ 这个像sed的语法,将para1匹配的字符串换成para2
2、把 .jpe 文件后缀修改为 .jpg:rename 's/\.jpe$/\.jpg/' *.jpe
3、把所有文件的文件名改为小写:
rename ‘y/A-Z/a-z/‘ *
4、将 abcd.jpg 重命名为 abcd_efg.jpg:for var in *.jpg; do mv "var" "{var%.jpg}_efg.jpg"; done
其中,此处涉及到shell的字符串匹配操作:
1>{variable#pattern} 如果pattern匹配variable的开始部分,从variable的开始处删除字符直到第一个匹配的位置,包括匹配部分,返回剩余部分。
2>{variable##pattern}如果pattern匹配variable的开始部分,从variable的开始处删除字符直到最后一个匹配的位置,包括匹配部分,返回剩余部分。
3>{variable%pattern} 如果pattern匹配variable的结尾部分,从variable的结尾处删除字符直到第一个匹配的位置,包括匹配部分,返回剩余部分。
4>{variable%%pattern}
如果pattern匹配variable的结尾部分,从variable的结尾处删除字符直到最后一个匹配的位置,包括匹配部分,返回剩余部分。
5、将 abcd_efg.jpg 重命名为 abcd_lmn.jpg:
for var in *.jpg; do mv “var” “{var%_efg.jpg}_lmn.jpg”; done
6、把文件名中所有小写字母改为大写字母:
for var in ls
; do mv -f “var” ‘echo “var” |tr a-z A-Z`; done
tr:traslate or delete characters
7、把格式 _?.jpg 的文件改为 _0?.jpg:
for var in ls *_?.jpg
; do mv “var” ‘echo “var” |awk -F ‘_’ ‘{print 1 “0” 2}’`; done
8、把文件名的前三个字母变为 vzomik:
for var in ls
; do mv -f “var” ‘echo “var” |sed ‘s/^…/vzomik/‘`; done
9、把文件名的后四个字母变为 vzomik:
for var in ls
; do mv -f “var” ‘echo “var” |sed ‘s/….$/vzomik/‘`; done
摘抄于:http://blog.csdn.net/trochiluses/article/details/9797313