文件,通配符

通常,如需要对多个文件对象执行单一操作,而不需要像前面的递归操作一样对整个树进行操作。例如,你可能想要找出在某个目录下中创建的所有文本文件的修改时间,而不需要列出分散的文件。尽管这很容易在小目录中实现,但是对于大型文件系统则非常困难。

要解决这个问题,可以使用 bash shell 中内置的通配符(wildcard)支持。这种支持也称为“globbing”(因为它最初被实现为一个名为 /etc/glob 的程序),让你能够使用通配符模式指定多个文件。

包含任何 '?'、'*' 或 '[' 字符的字符串就是一个通配符模式。Globbing 是指 shell(或另一个程序)将这些模式扩展为一组匹配该模式的参数的过程。这种匹配按照如下方式完成:

                    表1 Linux中常用通配符                     

字符含义实例
 

*

 

匹配 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 中的任意单一字符

 

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。

 

{string1,string2,...}

 

匹配 sring1 或 string2 (或更多)其一字符串

 

a{abc,xyz,123}b     a与b之间只能是abc或xyz或123这三个字符串之一。

我们常常在 ls、cp、mv 或 rm 命令中需要操作多个文件或目录名时使用通配符。

 

28191215_wfpd.png

 

注意

  

'*' 和  '?' 字符与它们自身匹配。如果在文件名中使用这些字符,那么需要注意适当的引用或转义。

 

两个字符之间的 '-' 字符表示一个范围,包括这两个字符和排序序列中介于这两个字符之间的所有字符。例如,[0-9a-fA-F] 表示任何大写或小写十六进制数位。你可以通过将 '-' 放到一个范围的首位或末位来匹配它。

 

'!' 在Shell中是有特殊含义的,因此需要小心地对它进行适当的转义。

 

文件通配符被单独应用到路径名的每个组成中。但我们无法匹配'/'。

 

 

28191215_dk3i.png小心 
  

命令中的任何通配符都可以被 shell 扩展,这将导致意外的结果。在使用 cp、mv 或 rm 出现异常行为之前,使用 ls 检查你的通配符模式。

转载于:https://my.oschina.net/u/3127489/blog/1554179

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值