读书人

shell学习与施用边学边用之六!(文

发布时间: 2012-10-09 10:21:45 作者: rapoo

shell学习与使用,边学边用之六!(文件批量复制更名))
在我学习python的时候,我将在ipython中测试的过程通过gnome-screenshot截屏下来保存。
一开始我命名的规则如下:



脚本文件分析:
一:
文件目录的存在性判断用在if语句中用的参数。

if [ -d "$dstdir" ] :如果目录存在。
和if [ ! -d "$dstdir" ] :如果目录不存在。
其他可用参数及说明如下:
## file=class_attribute_py18.pngfileSuffix=`echo $file| gawk --posix '{ print substr($1,match($1,/py[0-9]{2}/),(length($1) - 4))}'` ## fileSuffix = py18.pngfilePrefix=`echo $fileSuffix|gawk '{print substr($1,0,match($1,/\./)-1)}'` ## filePrefix = py18fileName=`echo $file|gawk --posix '{print substr($1,0,match($1,/py[0-9]{2}/)-2)}'` ## fileName=class_attributenewFileName="${filePrefix}_$fileName.png"## newFileName=py18_class_attribute.png

上面的的file变量值在注释中的值情况下:
各行代码执行之后对应变量赋值结果如相应后面的注释中的对应所示:
首先在抽取filePrefix提取时。因为提取fileSuffix中gawk中的match提取中的(length($1)-4)没有作用。所以 就多用了一次,因为从前面提取是有用的。
然后awk默认是不支持{}的正则的。所以要开启--posix或者--re-internal选项才可以。

在使用变量时除了$varName的这种方法之处,还可以使用${varName}这种方式。
上面的情况下第一个filePrefix变量必须使用后一种方式。

上面还使用了awk的内置的两个函数。substr()和match()

============未完待续=================

读书人网 >编程

热点推荐