点击排行
|
评论排行
|
9
Jul
Linux 下批量更改文件名
比如将所有文件名中带有20080707的字符更改成20080709?
root@ubuntu:~/test# cat re
#!/bin/bash
# code by thatday
#
ls -l $1 | grep ^[^d] | awk '{print $9}'| while read line; do
do=`echo $line | grep $2`
if [ ! "$do" = "" ]; then
newname=`echo $line | sed 's/'$2'/'$3'/g'`
echo "rename $line to $newname ..."
mv $1/$line $1/$newname
fi
done
root@ubuntu:~# chmod +x re
root@ubuntu:~# ls -l test/
total 4
-rw-r--r-- 1 root root 0 Jul 9 13:45 20070808jjj
-rw-r--r-- 1 root root 0 Jul 9 13:45 20070809abc
-rw-r--r-- 1 root root 0 Jul 9 13:45 aaa20070809bb
drwxr-xr-x 2 root root 4096 Jul 9 12:05 bak
-rw-r--r-- 1 root root 0 Jul 9 13:45 ccccc200708091
-rw-r--r-- 1 root root 0 Jul 9 13:45 dddd20070809aj
root@ubuntu:~# ./re test/ 20070809 20070810
rename 20070809abc to 20070810abc ...
rename aaa20070809bb to aaa20070810bb ...
rename ccccc200708091 to ccccc200708101 ...
rename dddd20070809aj to dddd20070810aj ...
root@ubuntu:~# ls test/
20070808jjj 20070810abc aaa20070810bb bak ccccc200708101 dddd20070810aj
#!/bin/bash
# code by thatday
#
ls -l $1 | grep ^[^d] | awk '{print $9}'| while read line; do
do=`echo $line | grep $2`
if [ ! "$do" = "" ]; then
newname=`echo $line | sed 's/'$2'/'$3'/g'`
echo "rename $line to $newname ..."
mv $1/$line $1/$newname
fi
done
root@ubuntu:~# chmod +x re
root@ubuntu:~# ls -l test/
total 4
-rw-r--r-- 1 root root 0 Jul 9 13:45 20070808jjj
-rw-r--r-- 1 root root 0 Jul 9 13:45 20070809abc
-rw-r--r-- 1 root root 0 Jul 9 13:45 aaa20070809bb
drwxr-xr-x 2 root root 4096 Jul 9 12:05 bak
-rw-r--r-- 1 root root 0 Jul 9 13:45 ccccc200708091
-rw-r--r-- 1 root root 0 Jul 9 13:45 dddd20070809aj
root@ubuntu:~# ./re test/ 20070809 20070810
rename 20070809abc to 20070810abc ...
rename aaa20070809bb to aaa20070810bb ...
rename ccccc200708091 to ccccc200708101 ...
rename dddd20070809aj to dddd20070810aj ...
root@ubuntu:~# ls test/
20070808jjj 20070810abc aaa20070810bb bak ccccc200708101 dddd20070810aj
孤独红尘
2008/09/09 10:31
rename 20080707 20080709 *20080707*
分页: 1/1
1
1



作者:
一个自动安装编译LAMP
帮朋友写的一个脚本
