使用shell脚本批量修改文件名

工作中,有时需要批量修改一些文件的名称,那么在量很大的情况下,我们就要学会用脚本来操作了,既省时又省力。

一、生成可执行文件

提示: 执行修改操作之前,我们先创建一个可执行文件。
1、新建一个无后缀格式的文件,比如文件名叫 rename
2、打开终端,cd到 rename 所在的目录。
3、终端输入命令 sudo chmod u+x rename
4、执行成功后,rename 文件就变成可执行文件了。

二、编辑 rename 文件

1、为了方便测试,我准备了一个 0icon 文件夹,里面包含一些文件夹和文件,如下图所示。
在这里插入图片描述
2、我们将所有文件的首字符修改成"x",编辑 rename 文件。

#!/bin/bash
function rename()
{
    
    
	cd $1
	echo $1
    cfilelist=$(ls -A)
    for cfilename in $cfilelist  
    do   
        if [[ $cfilename != .DS_Store ]]
        then 
            mv $cfilename $'x'${
    
    cfilename:1}	# 语句1
        fi
    done 
}
rename $1

打开终端,直接将 rename 文件拖拽进来(此时不要点回车,也不要输入其他字符);紧接着,将 0icon 文件夹也拖拽进来,这个时候我们再点击回车,执行操作后我们的文件首字母已经被换成了x。
在这里插入图片描述
3、我们在所有文件的首字符前加上"mg_" ,编辑 rename 文件,只需要将“语句1”修改成下面这句就可以了。

mv $cfilename $'mg_'$cfilename 		# 语句2

打开终端,执行上述同样的运行操作就可以修改我们的文件名。如下图所示。
在这里插入图片描述
4、上一步加了个"mg_",这一步我们再把它删除,编辑 rename 文件,只需要将“语句2”修改成下面这三句就可以了,这三句统一被称作“语句3”。

# 语句3
s=$cfilename
arr=(${
    
    s//_/ })  
mv $cfilename ${
    
    arr[1]}

打开终端,执行上述同样的运行操作就可以修改我们的文件名。名称又重新回到了第2条那样。

5、最后,我们来个不一样的操作,我们要通过代码,将第一个文件夹重命名为“GGG”,并将其他文件移到该文件夹内。编辑 rename 文件,只需要将“语句3”修改成下面这句。

s=$cfilename
arr=(${
    
    s//_/ })  
mv $cfilename $'GGG'${
    
    arr[1]}

执行之后,我们可以看到结构变成了下面这个样子,aaa 不在了,并多了个"GGG",文件目录也随之改变了。
在这里插入图片描述

后语

脚本里的这几句命令是可以修改的,可以尝试修改一下,看看会有什么样的结果。
另外,如果你想再了解多一点,可以查看 使用shell脚本删除指定后缀的文件 一文,希望对你有所帮助。

猜你喜欢

转载自blog.csdn.net/HYNN12/article/details/107251721