- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linux 通配符
/blog/static/1204468420109314753876/
linux?通配符 xmlnamespace prefix =o ns =urn:schemas-microsoft-com:office:office /
在您日常的?Linux?使用中,有很多时候您可能需要一次对多个文件系统对象执行单一操作(比如?rm)。在这些情况下,在命令行中输入许多文件通常让人感到厌烦:
$ rm file1 file2 file3 file4 file5 file6 file7 file8
为了解决这个问题,您可以利用?Linux?内置的通配符支持。这种支持也叫做“globbing”,允许您通过使用通配符模式一次指定多个文件。Bash?和其它?Linux?命令将通过在磁盘上查找并找到任何与之匹配的文件来解释这种模式。因此,如果在当前工作目录中,您有从?file1?到?file8?的文件,那么您可以输入下
面的命令来删除这些文件:
$ rm file[1-8]
或者,如果您只想要删除文件名以?file?开头的所有文件,您可以输入:
$ rm file*
或者,如果您想要列出?/etc?中以?g?开头的所有文件系统对象,您可以输入:
$ ls -d /etc/g*
/etc/gconf /etc/ggi /etc/gimp /etc/gnome /etc/gnome-vfs-mime-magic /etc/gpm /etc/group /etc/group-
现在,如果您指定了没有任何文件系统对象与之匹配的模式,会怎么样呢?在下面的示例中,我们试图列出/usr/bin?中以asdf?开头并且以?jkl?结尾的所有文件:
$ ls -d /usr/bin/asdf*jkl
ls: /usr/bin/asdf*jkl: No such file or directory
这里是对所发生情况的说明。通常,当我们指定一种模式时,该模式与底层系统上的一个或多个文件匹配,bash?以空格隔开的所有匹配对象的列表来替换该模式。但是,当模式不能找到匹配对象时,bash?将不理会参数、通配符等等,保留原样。因此,当“ls”不能找到文件?/usr/bin/asdf*jkl?时,它会报错。此处的有效的规则是:glob?模式只在与文件系统中的对象匹配时才可以进行扩展。
既然我们理解了?globbing?如何工作,我们来复习一下通配符语法。您可以使用几个用于通配符扩展的专门的字符。
(1)?“*”?将与零个或多个字符匹配。这就是说“什么都可以”。例子:
/etc/g*?与?/etc?中以?g?开头的所有文件匹配。
/tmp/my*1?与?/tmp?中以?my?开头,并且以?1?结尾的所有文件匹配。
?
?
(2)“?”?与任何单个字符匹配。例子:
myfile??与文件名为?myfile?后跟单个字符的任何文件匹配。
/tmp/notes?txt?将与?/tmp/notes.txt?和?/tmp/notes_txt?都匹配,如果它们存在。
?
(3)“[]”
该通配符与???相似,但允许指定得更确切。要使用该通配符,把您想要匹配的所有字符放在?[]?内。结果的表达式将与?[]中任一字符相匹配。您也可以用?-?来指定范围,甚至还可以组合范围。
例子:
myfile[12]?将与?myfile1?和?myfile2?匹配。只要当前目录中至少有一个这样的文件存在,该通配符就可以进行扩展。
[Cc]hange[Ll]og?将与?Changelog、ChangeLog、changeLog?以及?changelog?匹配。您可以看到,与大写形式的变形匹配时,使用括弧通配符很有用。
ls /etc/[0-9]*?将列出?/etc?中以数字开头的所有文件。
ls /tmp/[A-Za-z]*?将列出?/tmp?中以大写字母或小写字母开头的所有文件。
(4)[!]
除了不与括弧中的任何字符匹配外,[!]?构造与?[]?构造类似,只要不是列在?[!?和?]?之间的字符,它将与任何字符匹配。例子:
rm myfile[!9]?将删除除?myfile9?之外的名为?myfile?加一个字符的所有文件。
?
使用通配符的注意事项
由于?bash?对与通配符相关的字符(?、[、]、*)进行特别处理,因此您将包含这些字符的参数输入到命令中时,需要特别小心。例如,如果您想要创建一个包含字符串?[fo]*的文件,下面这个命令可能不会执行您想要做的事:
$ echo [fo]* /tmp/mynewfile
如果?[fo]*?这个模式与当前工作目录中的任何文件匹配,那么您将在?/tmp/mynewfile.txt?内发现那些文件的名称,而不是您所期望的文字?[fo]*。
文档评论(0)