文件通配符与正则表达式

文件通配符:
*********************************************************
    * 匹配零个或多个字符
    ? 匹配任何单个字符
    [0-9] 匹配数字范围
    [a-z] 字母  (注: [a-z] 匹配的字母并非全是小写字母)
    [A-Z] 字母  (注: [A-Z] 匹配的字母并非全是大写字母)
    [wang] 匹配列表中的任何的一个字符
    [^wang] 匹配列表中的所有字符以外的字符

    预定义的字符类(man 7 glob)
    [:digit:]:任意数字,相当于0-9
    [:lower:]:任意小写字母
    [:upper:]: 任意大写字母
    [:alpha:]: 任意大小写字母
    [:alnum:]:任意数字或字母
    [:blank:]:水平空白字符
    [:space:]:水平或垂直空白字符
    [:punct:]:标点符号
=========================================================
补充说明:文件通配符通常用于查找文件,而正则表达式通常用于查找文件内容
=========================================================
示例如下:

    1、显示示/var目录下所有以l开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
      # ls -d /var/l*[[:digit:]]*[[:lower:]]
    2、显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录
      # ls -d /etc/[[:digit:]]*[^[:digit:]]
    3、显示/etc/目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
      # ls -d /etc/[^[:alpha:]][[:alpha:]]*
    4、显示/etc/目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
      # ls -d /etc/rc[0-6]*
    5、显示/etc目录下,所有以.d结尾的文件或目录
      # ls -d /etc/*.d
    6、显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
      # ls -d /etc/[mnrp]*.conf
    7、只显示/root下的隐藏文件和目录
      # ls -d /root/.[^.]*
    8、只显示/etc下的非隐藏目录
      # ls -d /etc/*/

========================================================================================
知识延伸: ls -d选项的使用说明:
查看某目录的长列表信息时要是用使用-d选项:# ls -dl dir1 ,如果不加-d选项会显示目录下的文件列表信息
ls -dl /dir/*  使用-d选项显示当前目录下的文件或目录,但不会递归显示字母目录
ls -dl /dir/*/ 显示dir目录下的非隐藏文件夹要使用*/
========================================================================================

正则表达式:
基本正则表达式元字符
字符匹配:
*********************************************************
    . 匹配任意单个字符 (通配符使用?作为单个字符匹配)
    [] 匹配指定范围内的任意单个字符
    [^] 匹配指定范围外的任意单个字符
    [:alnum:] 字母和数字
    [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
    [:lower:] 小写字母 [:upper:] 大写字母
    [:blank:] 空白字符(空格和制表符)
    [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
    [:digit:] 十进制数字
    [:punct:] 标点符号
*********************************************************
匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数
*********************************************************
    * 匹配前面的字符任意次,包括0次
    贪婪模式:尽可能长的匹配
    .* 任意长度的任意字符
    \? 匹配其前面的字符0或1次
    \+ 匹配其前面的字符至少1次
    \{n\} 匹配前面的字符n次
    \{m,n\} 匹配前面的字符至少m次,至多n次
    \{,n\} 匹配前面的字符至多n次
    \{n,\} 匹配前面的字符至少n次
*********************************************************
位置锚定:定位出现的位置
*********************************************************
    ^ 行首锚定,用于模式的最左侧
    $ 行尾锚定,用于模式的最右侧
    ^PATTERN$ 用于模式匹配整行
    ^$ 空行
    ^[[:space:]]*$ 空白行
    \< 或 \b 词首锚定,用于单词模式的左侧
    \> 或 \b 词尾锚定;用于单词模式的右侧
    \<PATTERN\> 匹配整个单词
*********************************************************
    扩展正则表达式与标准正则表达式的区别在省略了转义字符\,如下:
    ?: 0或1次 (标准正则:\?)
    +:1次或多次(标准正则:\+)
    {m}:匹配m次(标准正则:\{m\})
    {m,n}:至少m,至多n次(标准正则:\{m,n\})
    分组:()(标准正则:\(\))