linux下批量修改文件名
linux下批量修改文件名
- 源自老男孩教育分享案例,内容做部分精简,自用
准备测试数据
mkdir /opt/tools
cd /opt/tools
touch stu_102999_1_finished.jpg
touch stu_102999_2_finished.jpg
touch stu_102999_3_finished.jpg
touch stu_102999_4_finished.jpg
touch stu_102999_5_finished.jpg
[root@zuiyoujie tools]# ll
total 4
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_5_finished.jpg
修改后的效果
[root@zuiyoujie tools]# ll
total 4
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Oct 2 12:50 stu_102999_5_.jpg
方法1:shell脚本for循环结合sed实现
[root@zuiyoujie tools]# cat rename_files01.sh
#!/bin/sh
for file in `ls ./*.jpg`
#shell脚本for循环,file为变量依次取得ls ./*.jpg的结果文件名
do
mv $file `echo $file|sed 's/finished//g'`
#使用mv命令进行更改文件,新的文件名字符串拼接是本题的重点。
done
方法2:shell脚本for循环加变量的部分截取方法
[root@zuiyoujie tools]#cat rename_files02.sh
#!/bin/sh
# zuiyoujie QQ:31333741
for file in `ls ./*.jpg`
do
/bin/mv $file `echo "${file%finished*}.jpg"` #这里就是变量的截取新方法,在老男孩的shell编程课程中会讲到此用法。
done
方法3:ls结合awk实现
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print $0}'
stu_102999_1_finished.jpg
stu_102999_2_finished.jpg
stu_102999_3_finished.jpg
stu_102999_4_finished.jpg
stu_102999_5_finished.jpg
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print $1}'
stu_102999_1_
stu_102999_2_
stu_102999_3_
stu_102999_4_
stu_102999_5_
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print $2}'
.jpg
.jpg
.jpg
.jpg
.jpg
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print $1$2}'
stu_102999_1_.jpg
stu_102999_2_.jpg
stu_102999_3_.jpg
stu_102999_4_.jpg
stu_102999_5_.jpg
[root@zuiyoujie tools]# ls |awk -F 'finished' '{print "mv "$0" "$1$2" "}'|/bin/bash
[root@zuiyoujie tools]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_5_.jpg
方法4:通过专业的改名命令rename实现
[root@zuiyoujie tools]# rename "finished" "" *
[root@zuiyoujie tools]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.jpg
拓展:改扩展名的方法
[root@zuiyoujie tools]# rename .jpg .tt *
[root@zuiyoujie tools]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.tt
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.tt
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.tt
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.tt
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.tt
10.参考地址
作者:天生帅才 www.zuiyoujie.com
本文版权归作者和博客园共有,如果感觉有用可以随意打赏,感谢支持,欢迎转载