通配符讲解

1244人浏览 / 0人评论

一、通配符应用场景

通配符是shell在做PathnameExpansion时用到的。说白了一般只用于文件名匹配,它是由shell解析的,比如find,ls,cp,mv等。

二、通配符讲解

通配符

含义

实例

*

匹配 0 或多个字符

a*b a与b之间可以有任意长度的任意字符, 也可以一个也没有, 如aabcb, axyzb, a012b, ab。

?

匹配任意一个字符

a?b a与b之间必须也只能有一个字符, 可以是任意字符, 如aab, abb, acb, a0b。

[list]

匹配 list 中的任意单一字符

a[xyz]b  a与b之间必须也只能有一个字符, 但只能是 x 或 y 或 z, 如: axb, ayb, azb。

[!list]或[^list]

匹配 除list 中的任意单一字符

a[!0-9]b a与b之间必须也只能有一个字符, 但不能是阿拉伯数字, 如axb, aab, a-b。

[c1-c2]

匹配 c1-c2 中的任意单一字符 如:[0-9] [a-z]

a[0-9]b 0与9之间必须也只能有一个字符 如a0b, a1b... a9b。

[!c1-c2]或[^c1-c2]

匹配不在c1-c2的任意字符

a[!0-9]b 如acb adb

{string1,string2,...}

匹配 sring1 或 string2 (或更多)其一字符串

a{abc,xyz,123}b 列出aabcb,axyzb,a123b

二、通配符实战

创建环境

[root@1 liangzeyu]# touch {1..100}.txt
[root@1 liangzeyu]# touch {1..100}..php

 1、*实战

 找出以php结尾的文件

[root@1 liangzeyu]# ls *.php
[root@1 liangzeyu]# find ./ -type f -name "*.php"

2、?实战

找出以1开头的php文件,并且是文件名是2的字符串的

[root@1 liangzeyu]# ls 1?.php
10.php  11.php  12.php  13.php  14.php  15.php  16.php  17.php  18.php  19.php  1..php
[root@1 liangzeyu]# find ./ -type f -name "1?.php"
./17.php
./1..php
./13.php
./16.php
 

3、[]实战

找出1-5之间的php文件

 [root@1 liangzeyu]# ls [1-5].php
1.php  2.php  3.php  4.php  5.php

[root@1 liangzeyu]# find ./ -type f -name "[1-5].php"
./1.php
./2.php
./3.php
./4.php

找出除了1-5之间的php文件

[root@1 liangzeyu]# find ./ -type f -name "[!1-5].php"
./8.php
./7.php
./6.php
./9.php
[root@1 liangzeyu]# ls [!1-5].php
6.php  7.php  8.php  9.php

[root@1 liangzeyu]# ls [^1-5].php
6.php  7.php  8.php  9.php

[root@1 liangzeyu]# find ./ -type f -name "[^1-5].php"
./8.php
./7.php
./6.php
./9.php

 找到文件名是8.txt 9.txt 6.txt的文件

[root@1 liangzeyu]# ls [896].txt
6.txt  8.txt  9.txt

[root@1 liangzeyu]# find ./ -type f -name "[896].txt"
./9.txt
./8.txt
./6.txt

4、{}实战

找到1-5范围的文件

[root@1 liangzeyu]# ls {1..5}.php
1.php  2.php  3.php  4.php  5.php 

找到1和5的文件

[root@1 liangzeyu]# ls {1,5}.php
1.php  5.php 

备份文件

[root@1 home]# cp -rp xunjian.txt{,.bak}
[root@1 home]# ls
 xunjian.txt  xunjian.txt.bak

 

全部评论