How to match files *.R and *Rd with find utility?

A suitable use of -regex would be:

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

If you want to use regular expressions you need to keep in mind that these apply to the whole path, not only to the filename:

   -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.

I agree with sampson-chen's answer, that regexes are probably not the best choice here.


Here you go =)

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

If it's just the 3 extension types that you are looking for, I'd recommend staying away from regex and just using the -o (as in "or") operator to compose your search instead.

Tags:

Regex

Find