在Linux中,glob是用来匹配路径名的通配符,glob主要包含以下4种:

Wildcard Matching

* 匹配0个或者多个字符,比如d*,可以匹配d, d1, dd1

?匹配单个字符,比如d?,只匹配dd,不匹配d

Character classes

包含在[]中的字符只会被匹配一个,并且[]里面不可以为空。比如[abc]匹配a,b,c中其中一个字符。需要注意的是[]里面可以包含[,],!,?,*,\这些特殊字符,因此[[!\*?]]匹配[,!,\,*,?中的一个字符

Range

两个字符中间用'-'连接表示range,比如[0-9]等同于[0123456789]。需要注意的是,如果-出现在开头或者结尾,并不表示range,比如[-a]或者[a-]匹配-,a字符中的一个。

Complementation

[!abc]表示匹配a,b,c之外的一个字符。

对于glob有三点需要注意:

1 上面任何形式glob都不匹配/字符,因此假设有如下目录结构:

D

|

-----------------------

|                        |

a.txt                      DD

|

a.txt

那么在D目录下运行ls *.txt只会列出D目录下的a.txt,而不会列出DD/a.txt

2 任何以.开头命名的文件都必须在glob中显示指定才能匹配,比如有一个文件.abc,那么rm *匹配不到.abc,只能使用rm .*

3 glob与正则表达式不一样,glog只匹配路径名,而不是匹配文件的内容,并且glob与正则表达式虽然有相同的通配符,但是意义却不一样,比如a*k在glob中可以匹配ak,abk,abck,但在正则表示中表示匹配ak,aak,aaak。

参考:

man 7 glob

Shell glob的更多相关文章

  1. shell tips

    1.shopt 命令可以设置shell的可选参数 shopt [-psu] [optname...] -s 开启某个选项 -u 关闭某个选项 -p 列出所有可设置的选项 其中开启extglob选项,s ...

  2. shell中的循环语句

    for语法格式 for var in list;do commands done 其中list可以包含: 1) 直接写 for alpha in a b c d;do echo $alpha done ...

  3. Python glob使用

    http://www.cnblogs.com/lovemo1314/archive/2011/04/26/2029556.html 说明: glob是python自己带的一个文件操作相关模块,用它可以 ...

  4. Ejabberd源码解析前奏--配置

    一.基本配置     配置文件将在你第一次启动ejabberd时加载,从该文件中获得的内容将被解析并存储到内部的ejabberd数据库中,以后的配置将从数据库加载,并且任何配置文件里的命令都会被添加到 ...

  5. Bash Scripting Learn Notes

    References: [1] http://www.tldp.org/LDP/Bash-Beginners-Guide/html/ 1. Executing programs from a scri ...

  6. Yum软件包管理详解

    目录 1. Yum 1.1 检查和更新包 1.1.1 查询更新 1.1.2 更新包 1.1.3 使用 ISO 和 Yum 离线升级系统 1.2 使用包 1.2.1 搜索包 1.2.2 列出包 1.2. ...

  7. IOCCC(The International Obfuscated C Code Contest)

    国际 C 语言混乱代码大赛(IOCCC, The International Obfuscated C Code Contest)是一项国际编程赛事,从 1984 年开始,每年举办一次(1997年.1 ...

  8. git 使用 gitignore

    git 使用 git简介 git 命令 git  忽略文件 git   作用:版本控制 Git 是一个开源的分布式版本控制软件,用以有效.高速的处理从很小到非常大的项目版本管理. Git 最初是由Li ...

  9. git 忽略文件 .gitignore 以及规则

    git提供了文件忽略系统,当对工作区某个目录或文件设置了忽略后,在执行status查看状态时,被忽略的文件即使存在也不会显示出来. 这样我就可以把那些不需要上传,不需要保留的文件或目录忽略掉(比如一些 ...

随机推荐

  1. 慕课linux学习笔记(二)Xshell与虚拟机的连接

    选择使用的是Xshell5 新建连接 连接成功 修改编码方式,字号,颜色 PS: 连接过程中遇到了很多问题,虚拟机的网络连接我最初选择的是桥连,虚拟机和主机相互之间都能ping通但Xshell就是连接 ...

  2. mysql分库分表总结<转>

    单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数 ...

  3. struts2 使用jsonplugin

    配置中的参数含义: root参数用于指定要序列化的根对象,如果省去这一配置,表示要序列化action中的所有属性 ignoreHierarchy 为false时表示要序列化根对象的所有基类 exclu ...

  4. 移动web前端的一些硬技能(一)关于移动设备

    移动端web其实也就是小尺寸触摸屏设备的web,其中包含了两个词——1.小尺寸设备:2.触摸屏.能把这两个问题给解决掉,就已经是一个基本合格的移动web前端开发工程师了.对于前端工程师来说,前路漫漫, ...

  5. hdu 5363Key Set

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5363 Problem Description soda has a set S with n inte ...

  6. angular--bootstrap实例日期控件【datepicker】

    head部分: <!--Bootstrap--> <link rel="stylesheet" href="/supProdom/script/boot ...

  7. 分治算法求乘方a^b 取余p(divide and conquer)

    传统的计算方法为循环n个a相乘.时间复杂度为O(n). 如用分治算法,效率可提升至O(lgn). 结合recursive有 double pow(int a, int n){ ) ; ) return ...

  8. VS2010安装MSDN

    VS2010正式版不再有单独的MSDN Library安装选项,以至于很多同学找不到本地的MSDN Library来用,其实VS2010的ISO安装光盘里已经包含有MSDN Library,只不过要手 ...

  9. RMAN学习笔记

    RMAN:如果RMAN连接一个远程数据库,格式:RMAN>rman target sys/jxsrpv@test 1.列出备份信息,所有的备份信息 RMAN>list backup of ...

  10. 微软推荐的Get a code signing certificate流程和链接

    Get a code signing certificate   Before you can establish a Windows Dev Center hardware dashboard ac ...