一、通配符应用场景
通配符是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
有问题请加博主微信进行沟通!
全部评论