zoukankan      html  css  js  c++  java
  • linux globbing文件名通配

    globbing:文件名通配

    • 元字符:

      • *:匹配任意长度的任意字符

      • ?:匹配任意单个字符

      • []:匹配指定范围内的任意单个字符

        • [a-z]或者[A-Z]或者[[:alpha:]]:匹配任意一个字母

        • [[:upper:]]:匹配任意一个大写字母

        • [[:lower:]]:匹配任意一个大写字母

        • [0-9]或者[[:digit:]]:匹配任意一个数字

        • [a-z0-9]或者[[:alnum:]]:匹配任意一个字母和数字

        • [[:space:]]:匹配一个空格

        • [[:punct:]]:匹配任意一个表达符号

          $ touch "p,;a"
          $ ls p[[:punct:]][[:punct:]]a
          p,;a
          
      • [^]:匹配指定范围外的任意单个字符

        • [[1]]:匹配非大写字母的任意字符。
        • [^0-9]:匹配非数字的的任意字符。
        • [[2]]:匹配非字母和数字的任意字符。
      • {}:表示符合括号内包含的多个文件

        # ll {*.log,*.txt}
        

        删除以me开头,以.tar,.bz2,.xz结尾的文件:

        # rm -rf ./me*.{tar,bz2,xz}
        

    如果想touch一个文件名里有空格的文件,怎么办?

    使用。下面例子创建的文件名【a d】,a和d中间有2个空格。

    或者使用“”,把文件名括起来。

    $ touch a  d
    $ touch "a  d"
    

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

    # ls -ld /var/[l]?[[:lower:]]
    drwxr-xr-x. 66 root root 4096 Dec  9 14:20 /var/lib
    drwxr-xr-x. 21 root root 4096 Dec 15 18:26 /var/log
    

    练习2:显示/etc目录下,以任意一位数字开头,且以非数字结尾的文件或目录。

    # ls -d /etc/[[:digit:]]*[^0-9]
    /etc/4afdsf@
    

    练习3:显示/etc目录下,以非字母开头,后面跟一个字母及其他任意长度任意字符的文件或目录

    # ls -d /etc/[^[:alpha:]][[:alpha:]]*
    /etc/4afdsf
    

    练习4:复制/etc目录下,所有以m开头,以非数字结尾的文件或目录,到/tmp/tp1目录。

    # cp -r /etc/m*[^0-9] /tmp/tp1
    

    练习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
    

    c/c++ 学习互助QQ群:877684253

    本人微信:xiaoshitou5854


    1. :upper: ↩︎

    2. :alnum: ↩︎

  • 相关阅读:
    「模拟赛20180306」回忆树 memory LCA+KMP+AC自动机+树状数组
    python写一个通讯录
    Git学习笔记
    交换排序
    用Windows自带的方法创建WiFi
    MySQL之触发器
    插入排序
    range和arange的区别
    Spring前后端跨域请求设置
    三、图的定义及遍历
  • 原文地址:https://www.cnblogs.com/xiaoshiwang/p/12046195.html
Copyright © 2011-2022 走看看