将某个文件夹下的文件批量重命名

Linux系统下需要进行批量操作最好使用shell脚本,来完成。使用shel脚本批量重名的方法很多,我写了个和大家不一样的脚本。

下图脚本中定义了两个函数,mk和change函数,在shell环境下使用点 . 加脚本名称直接调用。本文使用的是Centos 7系统,来接下来看执行过程,喜欢shell脚本的可以关注我。

将某个文件夹下的文件批量重命名_第1张图片

自定义mk函数

这个函数就是可以创建100*100个目录,并在每个目录的最后一级创建100个文件,文件个是100*100*100(100万)个。

如下图,调用mk.sh脚本,直接执行mk命令,创建了100万个txt空文件,只用了1分29秒,mkdir和touch的特殊用法{1..100},执行效率挺高的。

#find ./ -mindepth 2 -tpye d

-mindepth 2 搜索的最小路径,当前路径是0以此类推3级目录就是2

将某个文件夹下的文件批量重命名_第2张图片

如果要是for语句单个touch命令创建文件,touch创建一个空文件要0.004秒,100万个就需要大概66分钟,相差了近60倍。

日常在写脚本的时候,可以自定义一些函数,形成一个函数集,可以直接调用集合,直接用函数名称做为命令使用,方法如下。

#. mk.sh

自定义change函数首先获取到

这个函数就是批量重命名函数,使用了find查找到当前目录下(包含子目录)所有的txt文件,然后使用shell内置变量字符串切割(${i%.*}),将获取到的相对文件路径中,文件的后缀去掉,是不是很方便。

将某个文件夹下的文件批量重命名_第3张图片

我高估了linux命令mv的执行效率,上图图可以看到,在执行mv命令移动一个空文件需要0.005秒,那么100万个文件就需要1个多小时,不等直接结束了。

总结,shell脚本适用于批量操作和重复性操作,但是毕竟脚本语言,执行效率真的不高,只是方便大家的工作,学好shell脚本对于工作有着不小的帮助。

你可能感兴趣的:(点滴,Linux)