shell 通配符

来源:互联网 发布:阿里云经营性icp备案 编辑:程序博客网 时间:2024/05/10 08:33

 

 

 

SHELL 中主要有一下几种通配符:

(1)   : 代表0个或多个字符

(2)   : 代表一个字符

(3) [...] : 可以理解为一个字符,与?的区别是[]里面的内容限定了这个字符的范围

(4)   : 取反,一般和 [] 配合使用

例子: 

 (1) ls 1123 显示11开头的接着是若干个字符,最后是2加一个字符和3结束的文件

(2) [Cc]hange[Ll]og 

将与 ChangelogChangeLogchangeLog 以及 changelog 匹配。在需要大小写匹配的时候,使用括弧通配符很有用。

(3) ls /usr/[0-9]* 将列出 /usr 中以数字开头的所有文件。

 (4) ls/tmp/[A-Za-z]* 将列出 /tmp 中以大写字母或小写字母开头的所有文件。 

(5) rm myfile[!9] 将删除除myfile9 之外的名为 myfile 加一个字符的所有文件。

 

最后,附带说一下两个和转义相关的字符:

‘’:单引号 , 用引号引起来则说明引号里面的是纯字符串无须进行通配符的相关处理

例子: 

echo ‘[fo]*’ > newfile.txt 创建了包含字符串[fo]*的文件。 

如果echo [fo]* > newfile.txt newfile.txt 里面不会有任何东西 
例子: 

如果用户目录下有12* 12333这么两个文件,那么 

rm 12* 会删除12* 和 12333 

rm ‘12则只会删除12 

 

/  : 功能与单引号类似, 可以用作一些特殊字符的转义字符
例子:

 rm 12/* 则只会删除12*,这里/代表起后面的字符是纯字符没有其他意思,这 / C 语言里面的转义字符类似的。

很自然的,如果要表示字符/,你必须使用//

原创粉丝点击