Unix查找:如何匹配文件* .R和* Rd?

时间:2012-12-08 17:05:57

标签: regex find

我想查找所有以.c.R.Rd结尾的文件。我试过了

find . -iname "*.[cR]" -print

,其中包含以.c.R结尾的所有文件。我如何另外获取.Rd个文件?我知道[]只匹配一个字符,但我无法调整它以提供.Rd个文件(尝试使用|或选项-regex等。)

2 个答案:

答案 0 :(得分:17)

在这里你去=)

find -name "*.c" -o -name "*.R" -o -name "*.Rd"

如果它只是您要查找的3种扩展类型,我建议远离正则表达式,只需使用-o(如“或”)运算符来构建搜索。

答案 1 :(得分:8)

-regex的合适用途是:

find -regex '.*\.\(R\|Rd\|c\)'

如果你想使用正则表达式,你需要记住这些适用于整个路径,而不仅仅是文件名:

   -regex pattern
          File  name  matches regular expression pattern.  This is a match
          on the whole path, not a search.  For example, to match  a  file
          named `./fubar3', you can use the regular expression `.*bar.' or
          `.*b.*3', but not `f.*r3'.  The regular  expressions  understood
          by  find  are by default Emacs Regular Expressions, but this can
          be changed with the -regextype option.

我同意sampson-chen的回答,正则表达式可能不是这里的最佳选择。