大家好,又见面了,我是你们的朋友全栈君。
今天在看linux中有关Makefile文件的写法的时候,提到了通配符的概念。感觉似乎挺熟悉,但一时间竟想不起来到底为何物!经过在网上查询现总结如下:
1、linux中基本通配符:
“?”可替代单个字符。
“*”可替代任意字符。
方括号“[charset]”可替代charset集中的任何单个字符。
对最后一条做些解释。[cChH]通配符便可替代c或h字符的大小写形式。通配符集还能描述介于字符对之间的所有字符。如“[a-z]”就可以代替任意小写字母,而[a-zA-Z]则可替代任意字母。注意可替代的字符包括字符包括字符对之间的所有字符。
与DOS相比,UNIX的通配符机制要比DOS好得多。在DOS中,任何在“*”之后,在“.”之后的字符均被忽略,所以下面的指令将不能得到你想象的结果。
del *bak.*
在DOS中,用户只能用此命令删除当前目前下的所有文件,除非系统要求你不这样做。而在UNIX系统中,“*”可替代包括0在内的任意数字的字符,但一行中的其余特征也仍需匹配,因此“bak.*”可匹配newbak.save、oldbak.new甚至bak.temp,但不能和newbak匹配,因为后者不含“.”。这非常巧妙,可大大方便用户,而“*bak”则可匹配以上所有的词条,包括newbak。
2、可以在一条指令中用多个通配符
例如
rm a*out*tmp?
该命令可以删除一系列临时性的输出文件,如ab.out.temp1、ab.out.temp1等。
3、灵活使用通配符
UNIX可将有一定关的文件看作一集合的一部分,用户可以用该集合去匹配。所以,如果你需要删除file1.temp、file2.temp……file9.temp,只须健入:
rm file[0-9].temp
该技巧的用处在于可以用删除那些相要删除的文件。如果你每天都要为一个非常重要的数据库做一个“dump”报告,你把文件存入dump.’date%h%d’,它包括一系列文件如下:
dump.jun23
dump jun24
dump jun25
dump.jun26
再让我们假设因为每个文件的容量都在100M左右,所以磁盘空间很快会被占满,因此需要每隔几天删去一些老的文件,只留下最近的两个文件,为此,键入:
rm –i du*[34]
这条指令将删去那些以“du”开头并以“3”或“4”结尾的文件。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/191685.html原文链接:https://javaforall.cn