Find all files with specific extensions that contains a string
Solution 1
You can do it with grep only (without using find):
grep --include=\*.{xml,py} -Rl ./ -e "Jason"
And to exclude .po:
grep --exclude=*.po --include=\*.{xml,py} -Rl ./ -e "Jason"
Solution 2
Try the following command. It will search only in the .xml
and .py
files for your name:
find . -type f \( -iname \*.xml -o -iname \*.py \) | xargs grep "Jason"
Hope this helps!
Solution 3
This can be done with combining find
and grep
. Here is a small demo - I have test directory with 6 txt and rtf files, two of which contain string "Jason".
CURRENT DIR:[/home/xieerqi/testdir]
$ find . -type f \( -iname "*.txt" -o -iname "*.rtf" \) -exec grep -iR 'jason' {} +
./foo1.txt:Jason
./bar1.txt:Jason
CURRENT DIR:[/home/xieerqi/testdir]
$ ls
bar1.rtf bar1.txt bar2.rtf bar2.txt foo1.rtf foo1.txt foo2.rtf foo2.txt
CURRENT DIR:[/home/xieerqi/testdir]
$ find . -type f \( -iname "*.txt" -o -iname "*.rtf" \) -exec grep -iR 'jason' {} +
./foo1.txt:Jason
./bar1.txt:Jason
We find all the files with txt and rtf extensions here and give them all as parameters to grep. The .
means search in current directory, but you could specify another path and find
will descend into that directory and subdirectories, to search recursively.
Replacing extensions with yours, the final answer is
find . -type f \( -iname "*.xml" -o -iname "*.py" \) -exec grep -iR 'jason' {} +
Related videos on Youtube
Jonathan Solorzano
Updated on September 18, 2022Comments
-
Jonathan Solorzano over 1 year
I'd like to know how could I find all files whose extension can be
.xml
and.py
that contain the string "Jason" under a path "./" recursively?Or how could I exclude
.po
from the search? -
Jonathan Solorzano over 8 yearsHmm, i run the first line and it throws everything that contains py (all filers called py) and also didn't exclude .po
-
Sergiy Kolodyazhnyy over 8 yearsBeaten me by a second :) I'm using -exec though
-
Terrance over 8 years@Serg LOL. I do like your answer by the way! +1
-
Terrance over 8 yearsSimple, to the point. Works well. Might I suggest error output suppression for files it can't read through? +1
-
nobody over 8 yearsI would not do this because it searches in all files and that can take a long time. Why looking in files you know you do not want. Grep should be limited to search only in .xml and .py files.
-
Terrance over 8 yearsI like it Serg. =) It runs quickly on my system as well. Results were returned in a few seconds.