温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

linux下批量修改文件名的示例分析

发布时间:2021-10-21 18:11:56 来源:亿速云 阅读:119 作者:柒染 栏目:云计算

这篇文章将为大家详细讲解有关linux下批量修改文件名的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

问题:见一兄弟的需求,下面我截的图。
linux下批量修改文件名的示例分析
特别说明下,有的兄弟很细心,上面截图中说的是去掉_finished我的解答是针对去掉finished的,不过不影响大局,特请大家注意下。

解答:  
 [准备测试数据]
mkdir /oldboy cd /oldboy  
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  
 

方法1:shell脚本for循环结合sed实现
 [检查数据]
[root@oldboy oldboy]# ll  
total 4  
-rw-r--r-- 1 root root 85 Oct  2 12:54 oldboy_modi_file.sh  
-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@oldboy oldboy]# cat oldboy_modi_file.sh  
#!/bin/sh  
for file in `ls ./*.jpg`   
#shell脚本for循环,file为变量依次取得ls ./*.jpg的结果文件名  
do  
mv $file `echo $file|sed 's/finished//g'`  
#使用mv命令进行更改文件,新的文件名字符串拼接是本题的重点。  
done  
#特别提示:通过本题,可以学习到for循环的使用,及mv、sed等命令的使用  
 
 [执行脚本]
[root@oldboy oldboy]# sh oldboy_modi_file.sh  
 
 [检查结果]
[root@oldboy oldboy]# ll  
total 4  
-rw-r--r-- 1 root root 85 Oct  2 12:54 oldboy_modi_file.sh  
-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  
 
 方法二:shell脚本for循环加变量的部分截取方法

[root@oldboy oldboy]#ls -l
total 4
-rw-r--r-- 1 root root 114 Nov 14 00:21 change_file_name.sh
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_5_finished.jpg
[root@oldboy oldboy]#cat change_file_name.sh
#!/bin/sh
# oldboy QQ:31333741
for file in `ls ./*.jpg`
 do
/bin/mv $file `echo "${file%finished*}.jpg"`  #这里就是变量的截取新方法,在老男孩的shell编程课程中会讲到此用法。
done
[root@oldboy oldboy]#sh change_file_name.sh
[root@oldboy oldboy]#ls -l
total 4
-rw-r--r-- 1 root root 114 Nov 14 00:21 change_file_name.sh
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_1_.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_2_.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_3_.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_4_.jpg
-rw-r--r-- 1 root root   0 Nov 14 00:23 stu_102999_5_.jpg
特别提示:本脚本和文件在同一目录
 


 方法三:ls结合awk实现
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 18:13 stu_102999_5_finished.jpg
[root@oldboy oldboy]# 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@oldboy oldboy]# ls |awk -F 'finished' '{print  $1}'
stu_102999_1_
stu_102999_2_
stu_102999_3_
stu_102999_4_
stu_102999_5_
[root@oldboy oldboy]# ls |awk -F 'finished' '{print  $2}'
.jpg
.jpg
.jpg
.jpg
.jpg
[root@oldboy oldboy]# 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@oldboy oldboy]# ls |awk -F 'finished' '{print "mv "$0"> [root@oldboy oldboy]# 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
方法四:通过专业的改名命令rename实现
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_finished.jpg
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_finished.jpg
[root@oldboy oldboy]# rename "finished" ""  * ==>执行批量改名
[root@oldboy oldboy]# 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@oldboy oldboy]# rename .jpg .oldboy *
[root@oldboy oldboy]# ll
total 0
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_1_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_2_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_3_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_4_.oldboy
-rw-r--r-- 1 root root 0 Nov 13 19:38 stu_102999_5_.oldboy
特别提示:如果大家有需要解答问题可以,blog留言给我。我们互相交流,共同切磋,共同进步。  

关于linux下批量修改文件名的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI