各位看官们,咱们今天还是接着上一回的内容,列举具体的例子给大家。闲话休说,言归正转。


各位看官们,在实际的工作中经常需要批量处理文件,比如批量删除文件等。咱们今天就通过例子来说明

如何批量操作文件。咱们今天的内容有批量建立文件,批量重命名文件,批量删除文件。看官们批量本质

上是重复做相同的事情,这该使用什么操作?“循环”。台下已经有看官回答了。完全正确,咱们就是使用

循环操作来实现批量这个功能。新建文件,删除文件和重命名文件的命令:touch,rm,mv,我想大家都

记得如何使用这些命令吧。如果忘记的话,再通过咱们下面的例子来回顾一下。


各位看官们,新建立一个叫sample.sh的脚本文件,然后在里面输入布下的内容,并且保存。

#! /bin/bash

echo "-----------------the starting line of shell-----------------"

# create new files
for name in Test{1..3}.h
do
    touch $name
done

#show the files, which is created
for name in *.h
do
    echo $name
done

#rename the files
i=0
for name in *.h
do
    newname=${name%.*}-$i
    mv "$name" "$newname.h"
    let i++
done

#show the new files, which is renamed
for name in *.h
do
    echo $name
done

#remove the files
for name in *.h
do
    rm -rf $name
done

echo "-----------------the ending line of shell-----------------"


在终端中运行该程序可以得到以下的结果:

-----------------the starting line of shell-----------------

Test1.h

Test2.h

Test3.h

Test1-0.h

Test2-1.h

Test3-2.h

-----------------the ending line of shell-----------------


看官们,大家可以看到通过for循环操作实现了批量功能。该脚本文件会在脚本文件所在的目录中新建立

文件,大家可以把它放到自己定义的目录执行。该脚本中没有指定专门的目录,在显示文件的时候,也是

会遍历脚本所在目录中的.h文件,所以会把脚本第一阶段建立的.h文件显示出来。该方法在重命名和删除

文件时候也在使用。


看官们,在重命名的时候,有个新的知识需要和大家说明一下。name%.*表示把变量值中.前面的内容提取

出来。.后面是*表示匹配。例如:name的值是test1.h.经过提取后会得到test1,.h被舍弃。还有一种

方法:name#*.它表示把变量值中.后面的内容提取出来。例如:name的值是test1.h.经过提取后会得

到h,test1.会被舍弃。该方法在提取文件名,或者文件后缀时很有用。


各位看官们,今天的例子就到此为止,欲知后面还有什么好的例子,且听下回分解。

Logo

更多推荐