I want to run find -name with multiple file types. Eg.
find -name *.h,*.cpp
Is this possible?
$ find . -name '*.h' -o -name '*.cpp'
To find this information in the man
page, type man find
and the search for operators by typing /OPERATORS
and hit enter.
The .
isn't strictly necessary with GNU find, but is necessary in Unix. The quotes are important in either case, and leaving them out will cause errors if files of those types appear in the current directory.
On some systems (such as Cygwin), parentheses are necessary to make the set of extensions inclusive:
$ find . \( -name '*.h' -o -name '*.cpp' \)
That's what I use.I strongly recommend the "-regextype posix-extended" argument.
find . -type f -iname "*.log" -o -iname "*.gz"
find . -type f \( -name "*.gz" -o -name "*.log" \)
find . -type f -regex '.*\(\.gz\|\.log\)'
find . -type f -regextype posix-extended -regex '.*.(log|gz)'
find . -name "*.h" -or -name "*.cpp"
works for me.
Thats what I use
find . \( -name "*.h" -o -name "*.cpp" \) -print
find . -name '*.h' -o -name '*.cc'`
works for searching files.
find . \( -name '*.h' -o -name '*.cc' \)`
works for executing commands on them
find . \( -name '*.h' -o -name '*.cc' \) -exec egrep "#include" {} \; -print | egrep "^\."
find ./ -name *.csv -o \\-name *.txt|xargs grep -i new