1.5 通配符及其含义
假设你的计算机目录中有下列12个图片文件和1个文本文件:
libby1.jpg
libby2.jpg
libby3.jpg
libby4.jpg
libby5.jpg
libby6.jpg
libby7.jpg
libby8.jpg
libby9.jpg
libby10.jpg
libby11.jpg
libby12.jpg
libby1.txt
你想在命令行中使用rm
命令(第2章介绍)来删除这些文件,一次删除一个文件的做法既烦琐,还有些愚蠢。毕竟,使用计算机的一个原因就是它能够自动处理和简化乏味的任务。通配符可以完成这一任务,它可以通过字符匹配一次指定多个文件。
有3种通配符:*
(星号)、?
(问号)、和[ ]
(方括号)。接下来我们依次看看它们的用法。
“*
”匹配0或多个任意字符。表1-2列举了“*
”的一些用法以及能够匹配的内容。
表1-2 “*
”通配符及其匹配的内容
命 令 | 匹 配 |
---|---|
rm libby1*.jpg | libby10.jpg 到libby12.jpg ,但不匹配libby1.txt |
rm libby*.jpg | libby1.jpg 到libby12.jpg ,但不匹配libby1.txt |
rm *txt | libby1.txt ,但不匹配libby1.jpg 到libby12.jpg |
rm libby* | libby1.jpg 到libby12.jpg ,以及libby1.txt |
rm * | 目录中的所有文件 |
“?
”匹配单个字符。表1-3列举了“?
”的一些用法,以及能够匹配的内容。
表1-3 “?
”通配符及其匹配的内容
命 令 | 匹 配 |
---|---|
rm libby1?.jpg | libby10.jpg 到libby12.jpg ,但不匹配libby1.txt |
rm libby?.jpg | libby1.jpg 到libby9.jpg ,但不匹配libby10.jpg |
rm libby?.* | libby1.jpg 到libby9.jpg ,以及libby1.txt |
“[ ]
”可以匹配一组单个字符(例如,[12]
),或者是匹配用连字符(“-
”)指定的某一范围内的字符(例如,[1-3]
)。表1-4列举了“[ ]
”的一些用法,以及能够匹配的内容。
表1-4 “[ ]
”通配符及其匹配的内容
命 令 | 匹 配 |
---|---|
rm libby1[12].jpg | libby11.jpg 到libby12.jpg ,但不匹配libby10.jpg |
rm libby1[0-2].jpg | libby10.jpg 到libby12.jpg ,但不匹配libby1.jpg |
rm libby[6-8].jpg | libby6.jpg 到libby8.jpg ,但不匹配其他文件 |
本书中使用了很多通配符,所以现在介绍一下它们的用法是很有必要的。它们使在命令行中处理文件容易了很多,你一定会发现它们是多么有用。