Shell子串_变量子串案例_批量修改文件名
实际案例批量修改文件名
准备测试数据
[root@localhost sub_str]# touch xujianbing_{1..5}_finished.jpg
[root@localhost sub_str]# touch xujianbing_{1..5}_finished.png
[root@localhost sub_str]# ll
总用量 0
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_1_finished.jpg
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_1_finished.png
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_2_finished.jpg
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_2_finished.png
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_3_finished.jpg
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_3_finished.png
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_4_finished.jpg
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_4_finished.png
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_5_finished.jpg
-rw-r--r--. 1 root root 0 9月 13 15:53 xujianbing_5_finished.png
[root@localhost sub_str]#
应用实例
-
去掉所有文件的_finished字符信息
#!/bin/bash ###也可以用ls命令只列出名称 ls *.jpg ;ls *.png ##当然我想的grep for var in `find ./ |grep finished` do ####echo ${var#./} var1=${var#./} var2=${var1/finished/} mv ${var1} ${var2} echo ${var1}文件修改为 ${var2} done [root@localhost sub_str]# sh chfilename.sh xujianbing_1_finished.jpg文件修改为 xujianbing_1_.jpg xujianbing_2_finished.jpg文件修改为 xujianbing_2_.jpg xujianbing_3_finished.jpg文件修改为 xujianbing_3_.jpg xujianbing_4_finished.jpg文件修改为 xujianbing_4_.jpg xujianbing_5_finished.jpg文件修改为 xujianbing_5_.jpg xujianbing_1_finished.png文件修改为 xujianbing_1_.png xujianbing_2_finished.png文件修改为 xujianbing_2_.png xujianbing_3_finished.png文件修改为 xujianbing_3_.png xujianbing_4_finished.png文件修改为 xujianbing_4_.png xujianbing_5_finished.png文件修改为 xujianbing_5_.png
###方法2 [root@localhost sub_str]# ls *fini* xujianbing_1_finished.jpg xujianbing_2_finished.jpg xujianbing_3_finished.jpg xujianbing_4_finished.jpg xujianbing_5_finished.jpg xujianbing_1_finished.png xujianbing_2_finished.png xujianbing_3_finished.png xujianbing_4_finished.png xujianbing_5_finished.png [root@localhost sub_str]# for filename in `ls *fini*`; do mv ${filename} ${filename/finished/}; done [root@localhost sub_str]# ll 总用量 0 -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_1_.jpg -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_1_.png -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_2_.jpg -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_2_.png -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_3_.jpg -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_3_.png -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_4_.jpg -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_4_.png -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_5_.jpg -rw-r--r--. 1 root root 0 9月 13 16:32 xujianbing_5_.png [root@localhost sub_str]#
注意:1)可以先考虑去掉单个文件的字符,2)利用变量子串去掉字符,3)``反引号获取命令执行结果
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!