Linux bash基础特性之globbing

globbing:文件名通配(整体文件名匹配,而非部分)
匹配模式:元字符

  • *:匹配任意长度的任意字符
      pa*, pa, pa, pa
      pa, paa, passwd
  • ?:匹配任意单个字符
      pa?, ??pa, p?a, p?a?
      pa, paa, passwd
  • []:匹配指定范围内的任意单个字符
      有几种特殊格式:
      [a-z], [A-Z], [0-9], [a-z0-9]
      [[:upper:]]:所有大写字母
      [[:lower:]]:所有小写字母
      [[:alpha:]]:所有字母
      [[:digit:]]:所有数字
      [[:alnum:]]:所有的字母和数字
      [[:space:]]:所有空白字符
      [[:punct:]]:所有标点符号

   pa[0-9][0-9], 2[0-9][0-9]

  • [^]:匹配指定范围外的任意单个字符
      [^[:upper:]]
      [^0-9]
      [^[:alnum:]]

练习1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现一位任意字符的文件或目录;
  ls -d /var/l?[[:lower:]]

练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录;
  ls -d /etc/[0-9]*[^0-9]

练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其它任意长度任意字符的文件或目录;
  ls -d /etc/[^[:alpha:]][:alpha:]*

练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录至/tmp/mytest1.com目录;
  cp -r /etc/m*[^0-9] /tmp/mytest1.com/

练习5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下;
  cp -r /usr/share/man/man[0-9] /tmp/man/

练习6:复制/etc目录下,所有以.conf结尾,且以m,n,r,p开头的文件或目录至/tmp/conf.d/目录下;
  cp -r /etc/[mnrp]*.conf /tmp/conf.d/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容