使用正则表达式进行文件匹配,而不是字符串匹配

新手

我试图弄清楚如何使用它grep来搜索特定的字符串(为简单起见)"9",并且,为了简单起见,我想在所有包含该字符的文件中进行搜索b

我试过了grep -e "9" b,但是它说找不到文件b(如果我不使用该-e选项,则相同)。

我知道我可以争取grep -e "9" *b*,但这不是我的意思。我希望将正则表达式的常用工具用于文件名匹配。

我对复杂的获取方式不感兴趣。我希望可以有一个简单的选择grep我仔细阅读过man,但找不到任何有用的东西,但是我对Shell脚本非常陌生,因此很容易会错过它。

是否有可能使用使用正则表达式匹配文件名 grep如果是这样,怎么办?

吉米吉

grep本身没有使用regexp匹配文件的选项

您有两种选择:

  1. 使用shell glob,例如

    grep -e '9' b*
    

    上面是一个非常简单的示例,但是您可以匹配真正精美的文件名,尤其是在使用某些扩展机制的情况下。波纹管是一些有用bash的功能的列表,可以打开这些功能,可以在zsh其他外壳中找到类似的功能

    • globstar(用于**匹配整个目录树)
    • nocaseglob (不区分大小写的匹配)
    • extglob(扩展模式:?()@()!()*()+()
    • nullglob (非匹配模式扩展为空字符串)
  2. 使用find搜索文件和执行grep来自它:

    find . -name 'b*' -exec grep '9' {} +
    

    或是否需要使用正则表达式:

    find . -regex './b.*' -exec grep '9' {} +
    

    这种方法的优势在于,您find不仅可以通过名称添加名称,还可以通过日期,大小等添加其他开关来选择文件。除非使用zsh使用其强大的glob限定符,否则标准Shell的glob无法做到这一点

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用正则表达式顺序匹配正则表达式,而不是JavaScript中的字符串顺序

来自分类Dev

如何传递值以正则表达式而不是字符串常量进行重新匹配

来自分类Dev

使用正则表达式匹配字符串?

来自分类Dev

使用正则表达式匹配字符串?

来自分类Dev

匹配文件名而不是python正则表达式中的子字符串

来自分类Dev

如何在文档中使用正则表达式对字符串进行完全匹配

来自分类Dev

java中使用正则表达式进行字符串匹配

来自分类Dev

使用正则表达式对可选字符串进行Java字符串匹配

来自分类Dev

Java正则表达式匹配字符串

来自分类Dev

返回匹配正则表达式的字符串

来自分类Dev

匹配不带正则表达式的字符串

来自分类Dev

匹配任何字符串正则表达式

来自分类Dev

正则表达式以匹配Java字符串

来自分类Dev

Vim:匹配字符串的正则表达式

来自分类Dev

正则表达式匹配空字符串?

来自分类Dev

正则表达式不匹配字符串

来自分类Dev

与正则表达式匹配的Java字符串

来自分类Dev

正则表达式匹配特定字符串

来自分类Dev

正则表达式-匹配字符串模式

来自分类Dev

正则表达式与字符串不匹配

来自分类Dev

字符串与正则表达式不匹配

来自分类Dev

正则表达式后匹配字符串

来自分类Dev

正则表达式匹配子字符串

来自分类Dev

正则表达式匹配逗号或字符串

来自分类Dev

字符串之间的正则表达式匹配

来自分类Dev

正则表达式匹配“划定的字符串

来自分类Dev

用正则表达式匹配字符串

来自分类Dev

返回匹配正则表达式的字符串

来自分类Dev

正则表达式与字符串匹配