快速业务通道

在Unix中使用通配符提高操作效率

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-05-01

在Unix操作系统中有一组特殊的字符,它们叫做通配符.通过这些通配符,可以提高某些命令的使用效率.如现在在系统中的某个文件夹下,有test、test1、test2、test3、log、buildlog等文件.但是现在系统工程师只想对以test开头的文件进行操作,如想把它们复制到另外一个文件夹中去.如果没有通配符的情况下,则系统工程师不得不在在cp命令后面把所有的文件名都带上.当文件比较多时,这个操作显然是比较浪费时间的.现在在通配符的帮助下,这项工作将变得很简单.

  在Unix操作系统中,把用来构造文件名匹配模式的元字符叫做通配符.在Unix操作系统中,其通配符的功能是比较强大的.那么我们系统工程师可以利用通配符来实现哪些功能呢?在通配符使用过程中又需要注意哪些内容?笔者在接下去的文章中,将会对此进行详细的阐述.

  通配符*与通配符?是系统工程师使用的最频繁地两个通配符.如在对数据库进行异地备份的使用就需要用到这个通配符.如笔者前不久在Unix操作系统上部署了一个Oracle数据库系统,然后采用expdb工具导出数据库进行备份.但是利用这个工具在对数据库进行备份的时候,其用到的转储文件不只一个.如在数据库部署的时候,如果把这个转储文件的大小设置为1000M.而数据库的大小为5000M时,则的转储文件大小可能就有5个.如笔者把这个转储文件的名字设置为backup_%U.dmp的话,则其生成的转储文件的名字就为backup_01.dmp、backup_02.dmp等等.随着数据库容量的增加,这个转储文件的数量也会随之增加.为此当需要编写一个脚本,把备份在本地的转储文件复制到其他地方时,就不能够使用固定的文件名字了.而需要依靠这个通配符的作用.

  如我们可以把这些转储文件表示为*、backup*、backup_??.bmp等等.虽然它们都能够完成上面这个任务,但是其仍然有很大的差异.如*表示某个目录下面的所有文件名.如在上面这个需求中,如果除了这些转储文件外,还可能有每次备份的日志文件等等.那么使用单颗*通配符的话,不仅会将转储文件复制到其他地方,也会将这个目录下的其他文件如日志文件,也同时复制过去.显然,如果在这个目录下,由许多跟转储文件无关的文件时,容量比较大,那么在复制过程中就会占用比较多的时间.这是不值得的.为此还需要选择使用一些更加精确的通配符.

Empire CMS,phome.net

  那么如果使用backup*表示什么意思呢?如果使用字符串加*通配符,则表示文件名前面几个字符为backup,后面字符任意的文件.以上面这个需求为例,只要文件名中前面几个字符为backup的,则相关的文件都符合要求,都会被复制过去.但是,这也有一个问题.如在当前目录中,还有文件名为backup.txt的备份日志文件,那么也同时会给复制过去.而现在系统工程师只需要复制转储文件,这显然跟我们的愿望是违背的.我们只需要复制转储文件.

  为了最精确的定义某类文件,我们就需要使用?通配符.如上面这个需求,我们要定义符合条件的转储文件,则只需要使用backup_??.dmp即可.他表示名文件名字以backup_开头,后面接两个字符,以.dmp扩展名结尾的文件.一五一十的符合这个规则,否则的话,文件就不会被复制.显然,根据上面这个需求,符合这个条件的就只有转储文件而已.

  从上面这个案例中,我们可以看到通配符*与通配符?有本质上的差别.通配符* 表示任意个字符,包括空格字符.如果单个*号的话,表示当前目录下的所有文件;如果前面跟上字符串的话,则表示以这个字符串开头的文件.如果使用通配符?号的话,则表示单个字符.

  二、不常用的通配符.

  除了以上这两个通配符之外,在Unix操作系统中还有其他一些通配符.虽然这些通配符不怎么用,但是在一些特别的场合中仍然可以起到画龙点睛的作用.如通配符[abc]则表示三个字符中的任何一个字符;如通配符[a-z]则表示所有小写的英文字符.另外在需要的时候

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号