读书人

linux下的rename命令的bug解决思路

发布时间: 2012-04-11 17:42:33 作者: rapoo

linux下的rename命令的bug
环境:ubuntu 11.11 安装在 VMware 8上
1.Perl正则表达式

三种形式:
1.1> 匹配:m/<regexp>/ (可以省略,直接写成/regexp/)
1.2> 替换:s/<pattern>/<replacement>/
1.3> 转化:tr/<pattern>/<replacement>/

使用场景 rename 命令;rename 命令常用到替换和转换两种,
转换是将replacement逐个字符替换patter逐个字符,s/
替换是将replacement整个字符串替换 patter字符串。 tr/

lujiang@ubuntu:~/happy_1$ ls -li
total 56
678024 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_1
678025 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_2
678026 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_3
678027 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_4
678060 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_5
678061 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_6
678062 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_7
678063 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_8
678064 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_9
678066 -rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_a

lujiang@ubuntu:~/happy_1$ rename s/apply/appp/ apply_*
lujiang@ubuntu:~/happy_1$ ls
appp_1 appp_3 appp_5 appp_7 appp_9
appp_2 appp_4 appp_6 appp_8 appp_a
lujiang@ubuntu:~/happy_1$ ll
total 64
drwxrwxr-x 4 lujiang lujiang 4096 2012-03-31 02:41 ./
drwxr-xr-x 26 lujiang lujiang 4096 2012-03-30 18:07 ../
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_1
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_2
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_3
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_4
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_5
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_6
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_7
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_8
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_9
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appp_a
lujiang@ubuntu:~/happy_1$ rename s/appp/apply/ appp_*
lujiang@ubuntu:~/happy_1$ l
apply_1 apply_3 apply_5 apply_7 apply_9
apply_2 apply_4 apply_6 apply_8 apply_a
lujiang@ubuntu:~/happy_1$ ll
total 64
drwxrwxr-x 4 lujiang lujiang 4096 2012-03-31 02:41 ./
drwxr-xr-x 26 lujiang lujiang 4096 2012-03-30 18:07 ../
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_1
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_2
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_3
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_4
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_5
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_6
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_7
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_8
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_9
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apply_a
lujiang@ubuntu:~/happy_1$ rename tr/apply/appp/ apply_*
lujiang@ubuntu:~/happy_1$ ll
total 64
drwxrwxr-x 4 lujiang lujiang 4096 2012-03-31 02:42 ./
drwxr-xr-x 26 lujiang lujiang 4096 2012-03-30 18:07 ../
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_1
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_2
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_3
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_4
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_5
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_6
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_7
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_8
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_9


-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 apppp_a
lujiang@ubuntu:~/happy_1$ rename s/apppp/appSS/ apppp_*
lujiang@ubuntu:~/happy_1$ ll
total 64
drwxrwxr-x 4 lujiang lujiang 4096 2012-03-31 02:42 ./
drwxr-xr-x 26 lujiang lujiang 4096 2012-03-30 18:07 ../
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_1
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_2
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_3
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_4
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_5
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_6
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_7
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_8
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_9
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appSS_a
lujiang@ubuntu:~/happy_1$ rename tr/appSS/apply/ appSS_*
lujiang@ubuntu:~/happy_1$ ls
appll_1 appll_3 appll_5 appll_7 appll_9 goHome server
appll_2 appll_4 appll_6 appll_8 appll_a hello test_test
lujiang@ubuntu:~/happy_1$ ll
total 64
drwxrwxr-x 4 lujiang lujiang 4096 2012-03-31 02:43 ./
drwxr-xr-x 26 lujiang lujiang 4096 2012-03-30 18:07 ../
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_1
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_2
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_3
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_4
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_5
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_6
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_7
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_8
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_9
-rw-r--r-- 1 lujiang lujiang 179 2012-03-31 02:40 appll_a
lujiang@ubuntu:~/happy_1$


问题1:为何转化的时候,会出现转换字符不匹配的问题?

第一次用 rename tr/apply/appp/ apply_* 结果却转换成 apppp
第二次用rename tr/appSS/apply/ appSS_* ,结果却给我转换成appll

求大虾帮忙,传道解惑...


[解决办法]
是不是这样?

rename tr/apply/appp/ apply_*
字母l对应转换为p,字母y没有对应的字符,也转换为p

rename tr/appSS/apply/ appSS_*
字母S对应转换为l

读书人网 >UNIXLINUX

热点推荐