Regex 如何理解find/grep/rsync中的表达式/模式?
我的程序必须使用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 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命令允许您选择一种或另一种正则表达式风格;例如:
默认情况下使用POSIX Basicgrep
或grep-E
使用POSIX扩展egrep
使用Perlgrep-P
- 维基百科文章:
- 教程:
find-regextype-help
)、GNU-grep(取决于使用的选项:regex、扩展regex、Perl兼容的regex,请参阅:man-grep
)和rsync(glob)