通配符的使用方法(部分)
在实验楼的Linux 基础入门(新版)实验2:基本概念及操作中,有介绍集中通配符如下:
但是部分不是很好理解,以下是我通过查资料、实验整理的部分用法
-
“?”和“*”
通配符 | 用法 |
---|---|
? | 匹配任意一个字符 |
* | 匹配0或多个字符 |
?和*的用法较为简单,举例说明
- 在终端中输入
cd Desktop
touch test{1..5}.txt
touch test{1..5}.log
ls
在桌面建立如下10个文件
- 输入
find t*
find t*.log
find test?.txt
分别为查询以t开头的文件、以t开头的log文件、以test开头最后一个字符不明的txt文件,结果如下:
-
“[ ]”表示一个范围
代表“[”和“]”之间的某一个字符,比如[0-9]可以代表0-9之间的任意一个数字,[a-zA-Z]可以代表a-z和A-Z之间的任意一个字母,字母区分大小写。比如
find test[1-3].txt
查找以test开头,第五个字符是1-3中任意一个的txt文件
ls t[a-f]st?.log
ls t[f-z]st?.log
前者可以找到5个文件,而后找不到
t[a-f]st?.log
t[abcdef]st?.log
另外,以上这两行的代码的意思是相同的。
-
“!”或“^”表示非
例如,[!abcd] 或[^abcd]表示非,表示不匹配括号里面的任何一个字符,例如
注意事项
- 经测验,在实验楼中,“!”无效,“^”可使用
- “!”和“^”只能在[ ]中使用
- 凡是使用[ ]的,文件名必须包含扩展名,若要检索全部类型的文件,可用 * 表示扩展名;而仅使用“?”、“*”的可不写扩展名
-
"{..}"表示生产一个序列
touch test{1-5}.txt
touch test{1,2,3,4,5}.txt
//以逗号分隔,且不能有空格
以上两行代码意思相同。具体例子开头创建文件时已有,不再赘述
[]与{}区别:
[ ]只能用来找文件;
{ }可以用来找文件,或创造文件,生成序列
——陈思齐-Linux通配符的使用
参考: