I would like to find all files that end with .c
, .R
, or .Rd
. I tried
find . -iname "*.[cR]" -print
which gives all files that end with .c
or .R
. How can I additionally get .Rd
files as well? I know that []
only matches one character, but I couldn't adjust it to provide .Rd
files as well (tried to work with |
or option -regex
etc.)
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With