天天看点

bash基础特性:通配符

通配符:*,?,[],[^]

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

    pa*,*pa*,*pa,*p*a*

    pa,paa,passwd

?:匹配任意单个字符

    pa?

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

    [0-9]

    [a-z]:不区分字符大小写

    [A-Z]:大写字母

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

    [^[:upper:]]

    [^0-9]

    [^[:alnum:]]

有几种特殊格式,常用。(外面中括号是范围匹配的)

    [a-z],[A-Z],[0-9],[a-z0-9]

    [[:upper:]]:任意大写字母A-Z

    [[:lower:]]:任意小写字母a-z

    [[:alpha:]]:任意大小写字母A-Z,a-z

    [[:digit:]]:任意数字,相当于0-9

    [[:alnum:]]:任意数字或字母0-9,A-Z,a-z

    [[:space:]]:任何会产生空白的字符,包括空格键[Tab]CR等

    [[:punct:]]:标点符号,即"'?!;:#$

不常用的:

    [[:blank:]]:代表空格键与[Tab]键

    [[:graph:]]:代表键盘上面的控制按键,即包括CR,LF,Tab,Del等

    [[:graph:]]:除了空格符(空格键与[Tab]按键)外的其他所有按键

    [[:xdigit:]]:代表十六进制的数字类型,因此包括0-9,A-F,a-f的数字与字符

练习:

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

<code>[root@note1 ~]</code><code># ls -d /var/l?[[:lower:]]</code>

<code>/var/lib</code>  <code>/var/log</code>

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

<code>[root@node1 ~]</code><code># ls -d /var/l*[0-9]*[[:lower:]]</code>

<code>/var/l86c</code>

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

<code>[root@note1 ~]</code><code># touch /etc/6abcd8948x</code>

<code>[root@note1 ~]</code><code># ls -d /etc/[0-9]*[^0-9]</code>

<code>/etc/6abcd8948x</code>

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

<code>[root@note1 ~]</code><code># touch /etc/8eabc</code>

<code>[root@node1 ~]</code><code># ls /etc/[^[:alpha:]][[:alpha:]]*</code>

<code>[root@note1 ~]</code><code># ls -d /etc/[^a-z][a-z]*</code>

<code>/etc/8eabc</code>

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

<code>[root@note1 ~]</code><code># ls -d /etc/m*[^0-9]</code>

<code>/etc/machine-id</code>                <code>/etc/mke2fs</code><code>.conf     </code><code>/etc/mtab</code>

<code>/etc/magic</code>                     <code>/etc/modprobe</code><code>.d      </code><code>/etc/my</code><code>.cnf</code>

<code>/etc/makedumpfile</code><code>.conf.sample  </code><code>/etc/modules-load</code><code>.d  </code><code>/etc/my</code><code>.cnf.d</code>

<code>/etc/man_db</code><code>.conf               </code><code>/etc/motd</code>

<code>[root@note1 ~]</code><code># cp -r /etc/m*[^0-9] /tmp/magedu.com/</code>

练习5:复制/etc目录下,所有以.d结尾的文件或目录至/tmp/magedu.com目录中

<code>[root@node1 ~]</code><code># ls -d /etc/*.p        #.d结尾的文件太多了,改成.p结尾的文件</code>

<code>/etc/123</code><code>.p</code>

<code>[root@node1 ~]</code><code># cp -a /etc/*.p /tmp/magedu.com/</code>

5:复制/usr/share/man目录下,所有以man开头,后跟一个数字结尾的文件或目录至/tmp/man/目录下

<code>[root@note1 ~]</code><code># ls -d /usr/share/man/man[0-9]</code>

<code>/usr/share/man/man1</code>  <code>/usr/share/man/man4</code>  <code>/usr/share/man/man7</code>

<code>/usr/share/man/man2</code>  <code>/usr/share/man/man5</code>  <code>/usr/share/man/man8</code>

<code>/usr/share/man/man3</code>  <code>/usr/share/man/man6</code>  <code>/usr/share/man/man9</code>

<code>[root@note1 ~]</code><code># cp -r /usr/share/man/man[0-9] /tmp/man/</code>

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

<code>[root@note1 ~]</code><code># ls -d /etc/[mnrp]*.conf</code>

<code>/etc/man_db</code><code>.conf  </code><code>/etc/nsswitch</code><code>.conf  </code><code>/etc/rsyslog</code><code>.conf</code>

<code>/etc/mke2fs</code><code>.conf  </code><code>/etc/resolv</code><code>.conf</code>

<code>[root@note1 ~]</code><code># cp -r /etc/[mnrp]*.conf /tmp/conf.d/</code>

<code></code>

      本文转自cix123  51CTO博客,原文链接:http://blog.51cto.com/zhaodongwei/1839192,如需转载请自行联系原作者