find/grep/rsync中的expression/pattern如何理解?

How to comprehend expression/pattern in find/grep/rsync?

我必须为我的程序使用 findgreprsync 命令。通常,我很少在一个脚本中使用所有这些,所以没有早点注意到。是否有适合这些命令的 regular-expression 类别,例如:

find command: follows regex type1
grep command: follows regex type2
rsync command: follows regex type3

例如,要找到导致我的程序日志文件的所有路径,我们可以这样做:

find -type f -name "foo.log*"

这里,在上面的命令中,star 不像一个正确的正则表达式,因为在正则表达式中,star 对应到紧接在表达式之前的 zero/one/multiple 个实例,在这种情况下是 character('g') ?因此,如果它实际上遵循正则表达式,它可以匹配如下文件名:

foo.lo
foo.log
foo.logg
foo.loggg
and so on...

类似于 find 命令,rsync 在给定其源路径和目标路径的表达式时表现。另一方面,我注意到 grep 命令确实遵循正则表达式。

所以,总共:

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

我是 Linux 工具的新手。请指导!

通配符和正则表达式有很大区别。

通配符:

  • 定义简单搜索模式的特殊字符
  • 由 shell(bash、旧的 MS-DOS,...)和许多 unix 命令(find,...)使用
  • 有限的一组通配符,通常只是:
    • * - 零个或多个字符(任意组合)
    • ? - 恰好一个字符(任何字符)
    • [...] - 一组或一系列字符中的一个字符,例如 [0-9a-f] 表示十六进制数字
  • 查看教程:https://linuxhint.com/bash_wildcard_tutorial/

正则表达式: