需求:批量的将系统文件中的文件名Drugs去掉。
①创建测试文件
touch
sta_20190726_drugs.jpg
sta_20190727_drugs.jpg
sta_20190728_drugs.jpg
sta_20190729_drugs.jpg
sta_20190730_drugs.jpg
sta_20190731_drugs.jpg

②批量删除之前需要知道单个修改文件名的方法:
[root@6 tmp]# mv sta_20190726_drugs.jpg sta_20190726_jpg

③利用变量赋值和替换的方式实现mv命令批量改名的需求:
[root@6 tmp]# dg="sta_20190726_drugs.jpg"
[root@6 tmp]# echo ${dg//_drugs/}
sta_20190726.jpg
[root@6 tmp]# mv $dg `echo ${dg//_drugs/}`
如图所示:结果显示单个文件利用变量赋值和替换的方式处理掉了。

④单单处理一个是不够得,进行批量处理,利用循环语句去解决!
[root@6 tmp]# for dg in `ls *.jpg`;do mv $dg `echo ${dg//_drugs/}`;done
如图所示:其中有一个报错不用去管他,因为之前已经改过了一个文件了,查看其他文件名已被改过来了

当然,还可以利用rename更高效的去解决这个需求,先创建测试文件。

[root@6 tmp]# rename "drugs" "" *.jpg

需求2:利用变量子串中替换的方法将文件中后缀名小写改为大写的后缀名
①创建多个测试文件:
[root@6 tmp]# touch {a..d}.html

②单个文件利用变量子串//替换演示:将结尾的html替换成HTML
[root@6 tmp]# echo ${HT/%html/HTML}

[root@6 tmp]# mv $HT ${HT/%html/HTML}

举一反三,要想替换文件名,加上#即可:
[root@6 tmp]# echo ${HT/#a/A}

③利用for循环,批量更改后缀名:
[root@6 tmp]# for HT in `ls *.html`;do mv $HT ${HT/%html/HTML};done

也可用renma去解决:[root@6 tmp]# rename ".HTML" ".html" *.HTML

本文介绍如何使用Linux命令批量修改文件名,包括去除特定子串和更改文件后缀大小写。通过示例展示了mv命令结合变量替换及for循环的应用,同时介绍了rename命令的高效批量处理方法。

被折叠的 条评论
为什么被折叠?



