linux find 命令中 如何使用正则表达式,为什么经常找不到想要的文件名

linux find 命令中 如何使用正则表达式,为什么经常找不到想要的文件名


1. 本文说明的find 版本是 find (GNU findutils) 4.4.2


2. find中使用正则表达式的语法是 find dir -regextype "type" -regex "pattern"

其中

dir:查找文件的起始目录

type: 如果不使用选项 -regextype "type", 则默认的正则表达式类型是emacs(我没用过)。使用该选项的话,type 类型包括 posix-awk, posix-basic, posix-egrep 和 posix-extended 四种。我常用的是后两种。记得php也是常用后两种。

pattern: find 中要想使用正规正则表达式,需要用选项 -regex "pattern". (这和常用的grep似乎不一样)。 而pattern就用相应类型风格的正则表达式替换即可。注意 find 的常用选项 -name 是不支持正则表达式的,充其量只能说 -name 选项支持通配符 * ? [] 。


3. find 正则表达式匹配的是什么

这是经常出问题的地方。至少我该刚接触find 的时候就屡犯这个错误。注意:find 正则表达式是匹配全路径(包含文件名和相对路径),它不是搜索。也就是说所写的正则必须能够匹配整个搜索目录路径和文件名的组合,而不是单单匹配文件名本身。比如说:查找当前目录下的 fubar3 文件。 它的全路径(相对路径)是 ./fubar3 , 注意前面有 ./ 而不只是文件名。所以正则可以写成  `.*bar.'  或者 `.*b.*3' 等等,但是不能写成  `f.*r3' (这里就不能匹配前面的目录部分)



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值