O、前言
虽然单个文件更名,我们可以使用mv命令进行更名。那几百个文件更改,这个工程量比较大,下面介绍一下如何使用for循环语句来批量修改文件名。
一、环境介绍
1.Centos版本:Centos7-X86_64-Eeverything2009
二、命令介绍
这里主要用到basename命令来提取文件名,比如a.txt中的a,提取出来方便新加后缀名,所以着重介绍一下
2.1 basename
显示文件路径名的基本文件名
2.2 basename语法
basename NAME [SUFFIX(后缀)]
更多用法:使用man basename命令进行查看,这里不做过多概述
2.3 basename示例
1.执行touch 1.txt命令新建一个名为1.txt的文件。
[root@test ~]# touch 1.txt
2.执行basename 1.txt .txt命令提取1.txt的文件名。
[root@test ~]# basename 1.txt .txt
1
三、for循环简单介绍
3.1 for循环语法
for 参数 in 列表(可以通过命令形成列表)
do 执行的命令
done 结束一个循环
四、操作步骤
4.1 环境准备
1.执行touch {a…e}.txt命令创建a-e.txt的五个文件。
[root@test test]# touch {a…e}.txt
[root@test test]# ll
total 0
-rw-r–r-- 1 root root 0 Oct 16 19:07 a.txt
-rw-r–r-- 1 root root 0 Oct 16 19:07 b.txt
-rw-r–r-- 1 root root 0 Oct 16 19:07 c.txt
-rw-r–r-- 1 root root 0 Oct 16 19:07 d.txt
-rw-r–r-- 1 root root 0 Oct 16 19:07 e.txt
4.2 编写for循环语句
[root@test test]# for filename in ls *.txt
do
mv $filename $(basename $filename .txt).mp3
done
语句解释如下
for filename in ls *.txt
#将ls *.txt执行结果形成列表后将其一个一个赋值给filename
mv $filename $(basename KaTeX parse error: Expected 'EOF', got '#' at position 20: …name .txt).mp3 #̲(basename KaTeX parse error: Expected 'EOF', got '#' at position 21: …ame .txt)提取文件名 #̲(basename $filename .txt).mp3提取文件名并赋予.mp3的后缀
#mv $filename $(basename $filename .txt).mp3将.txt后缀修改为.mp3后缀
整合之后模板,可以套用所有。
touch {a..e}.txt
for filename in `ls *.txt`
do
mv $filename $(basename $filename .txt).mp3
done
生产环境实践将naocs配置批量修改,将test.yml的后缀全部改成yxyw-prod.yml
unzip -d nacos nacos_config_export_20230516105440.zip
for filename in `ls *test.yml`
do
mv $filename $(basename $filename test.yml)yxyw-prod.yml
done
改完之后重新压缩,导回nacos配置
zip -r nacos_config_export_20230516105440.zip ./*