工作中,有时需要批量修改一些文件的名称,那么在量很大的情况下,我们就要学会用脚本来操作了,既省时又省力。
一、生成可执行文件
提示: 执行修改操作之前,我们先创建一个可执行文件。
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脚本删除指定后缀的文件 一文,希望对你有所帮助。