预备知识
rename命令利用perl正则表达式修改文件名。综合运用find、rename和mv,我们能做到的事其实很多。
实战演练
[root@shaofeng ~]# cat rename.sh
#!/bin/bash
#文件名: rename.sh
#用途:重命名.jpg和.png文件
count=1;
for img in `find . -iname '*.png' -o -iname '*.jpg' -type f -maxdepth 1`
do
new=image-$count.${img##*.}
echo "Renaming $img to $new"
mv "$img" "$new"
let count++
done
工作原理
- for循环对所有扩展名为.jpg或.png的文件进行迭代。
- find命令进行搜索,选项-o用于指定多个-iname选项,后者用于执行大小写无关的匹配。
- 借助-maxdepth 1,确保$img中包含来自当前目录的文件名,无视其他的子目录。
将所有的.jpg更名为*.png
[root@shaofeng rename]# touch foo1 foo2 foo3
[root@shaofeng rename]# ls -all
总用量 8
drwxr-xr-x 2 root root 4096 12月 9 11:57 .
dr-xr-x---. 13 root root 4096 12月 9 11:50 ..
-rw-r--r-- 1 root root 0 12月 9 11:57 foo1
-rw-r--r-- 1 root root 0 12月 9 11:57 foo2
-rw-r--r-- 1 root root 0 12月 9 11:57 foo3
[root@shaofeng rename]# rename foo foo0 foo?
[root@shaofeng rename]# ls -all
总用量 8
drwxr-xr-x 2 root root 4096 12月 9 11:57 .
dr-xr-x---. 13 root root 4096 12月 9 11:50 ..
-rw-r--r-- 1 root root 0 12月 9 11:57 foo01
-rw-r--r-- 1 root root 0 12月 9 11:57 foo02
-rw-r--r-- 1 root root 0 12月 9 11:57 foo03
[root@shaofeng rename]# rename foo foo0 foo??
[root@shaofeng rename]# ls -all
总用量 8
drwxr-xr-x 2 root root 4096 12月 9 11:58 .
dr-xr-x---. 13 root root 4096 12月 9 11:50 ..
-rw-r--r-- 1 root root 0 12月 9 11:57 foo001
-rw-r--r-- 1 root root 0 12月 9 11:57 foo002
-rw-r--r-- 1 root root 0 12月 9 11:57 foo003
[root@shaofeng rename]# rename foo foo0 foo*
[root@shaofeng rename]# ls -all
总用量 8
drwxr-xr-x 2 root root 4096 12月 9 11:59 .
dr-xr-x---. 13 root root 4096 12月 9 11:50 ..
-rw-r--r-- 1 root root 0 12月 9 11:57 foo0001
-rw-r--r-- 1 root root 0 12月 9 11:57 foo0002
-rw-r--r-- 1 root root 0 12月 9 11:57 foo0003
[root@shaofeng rename]# touch foo021 foo022
[root@shaofeng rename]# rename foo0 foo foo0[2]*
[root@shaofeng rename]# ls -all
总用量 8
drwxr-xr-x 2 root root 4096 12月 9 12:02 .
dr-xr-x---. 13 root root 4096 12月 9 11:50 ..
-rw-r--r-- 1 root root 0 12月 9 11:57 foo0001
-rw-r--r-- 1 root root 0 12月 9 11:57 foo0002
-rw-r--r-- 1 root root 0 12月 9 11:57 foo0003
-rw-r--r-- 1 root root 0 12月 9 12:01 foo21
-rw-r--r-- 1 root root 0 12月 9 12:01 foo22