Regex 如何理解find/grep/rsync中的表达式/模式?

Regex 如何理解find/grep/rsync中的表达式/模式?,regex,grep,find,glob,rsync,Regex,Grep,Find,Glob,Rsync,我的程序必须使用find、grep和rsync命令。一般来说,我很少在一个脚本中使用所有这些,所以之前没有注意到。是否有适合以下命令的正则表达式类别: find command: follows regex type1 grep command: follows regex type2 rsync command: follows regex type3 例如,要查找指向我的程序日志文件的所有路径,我们可以执行以下操作: find -type f -name "foo.log*&qu

我的程序必须使用find、grep和rsync命令。一般来说,我很少在一个脚本中使用所有这些,所以之前没有注意到。是否有适合以下命令的正则表达式类别:

find command: follows regex type1
grep command: follows regex type2
rsync command: follows regex type3
例如,要查找指向我的程序日志文件的所有路径,我们可以执行以下操作:

find -type f -name "foo.log*"
这里,在上面的命令中,星号的作用不像一个适当的正则表达式,在regex中,星号对应于前一个表达式的零个/一个/多个实例,在这种情况下,它是字符('g')?因此,如果它实际上遵循regex,它可以匹配如下文件名:

foo.lo
foo.log
foo.logg
foo.loggg
and so on...
与find命令类似,当为其源路径和目标路径指定表达式时,rsync的行为。另一方面,我注意到grep命令确实遵循正则表达式

因此,总的来说:

  • 所有这些命令都遵循不同类型的正则表达式吗
  • 或者有些遵循正则表达式,而有些则不遵循,如果不遵循,那么它们遵循的是什么模式?基本上,我在寻找所有这些工具模式的概括

  • 我不熟悉Linux工具。请导游

    通配符和正则表达式之间有很大的区别

    通配符:

    • 定义简单搜索模式的特殊字符
    • shell(bash、旧MS-DOS等)和许多unix命令(find等)使用
    • 有限的通配符集,通常仅:
      • *
        -零个或多个字符(任意组合)
      • -正好一个字符(任意字符)
      • [
        ..
        ]
        -一组或一系列字符中正好有一个字符,例如六进制数字的
        [0-9a-f]
    • 请参见教程:
    正则表达式:

    • 定义搜索模式的字符序列
      • 将正则表达式(简称regex)视为类固醇上的通配符
    • 正则表达式模式用于查找查找并替换字符串
    • 强大的语言,大多数编程语言本机支持
    • 正则表达式有不同的风格,通常分为以下几类:
      • POSIX Basic(BRE-Basic正则表达式)
      • POSIX扩展(ERE-扩展正则表达式)
      • Perl和PCRE(与Perl兼容的正则表达式)
      • JavaScript
      • 更多口味,请参见
    • 某些unix命令允许您选择一种或另一种正则表达式风格;例如:
      • grep
        默认情况下使用POSIX Basic
      • grep-E
        egrep
        使用POSIX扩展
      • grep-P
        使用Perl
    • 维基百科文章:
    • 教程:
    GNU-find(请参阅:
    find-regextype-help
    )、GNU-grep(取决于使用的选项:regex、扩展regex、Perl兼容的regex,请参阅:
    man-grep
    )和rsync(glob)