How to perform grep operation on all files in a directory?
Solution 1:
grep $PATTERN *
would be sufficient. By default, grep would skip all subdirectories. However, if you want to grep through them, grep -r $PATTERN *
is the case.
Solution 2:
In Linux, I normally use this command to recursively grep
for a particular text within a directory:
grep -rni "string" *
where
-
r
= recursive i.e, search subdirectories within the current directory -
n
= to print the line numbers tostdout
-
i
= case insensitive search
Solution 3:
Use find. Seriously, it is the best way because then you can really see what files it's operating on:
find . -name "*.sql" -exec grep -H "slow" {} \;
Note, the -H is mac-specific, it shows the filename in the results.