各位看官们,咱们今天还是接着上一回的内容,列举具体的例子给大家。闲话休说,言归正转。
各位看官们,在实际的工作中经常需要批量处理文件,比如批量删除文件等。咱们今天就通过例子来说明
如何批量操作文件。咱们今天的内容有批量建立文件,批量重命名文件,批量删除文件。看官们批量本质
上是重复做相同的事情,这该使用什么操作?“循环”。台下已经有看官回答了。完全正确,咱们就是使用
循环操作来实现批量这个功能。新建文件,删除文件和重命名文件的命令: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.会被舍弃。该方法在提取文件名,或者文件后缀时很有用。
各位看官们,今天的例子就到此为止,欲知后面还有什么好的例子,且听下回分解。