Grep with -r
was not working for me.
I then made a test situation. The directory /home/den/backup
now contains a file with the word washer
in it. I also made a subdirectory within /home/den/backup
. In that directory a file contains the word washer
. The following should return two hits at /home/den/backup/great.txt
and /home/den/backup/aaa/info.txt
If I issue
grep -r "washer" /home/den/backup/*.*
the result is one hit.
If I issue
grep -r "washer" /home/den/backup/aaa/*.*
the result is one hit.
Shouldn't the first one have also found the second one, which is in one if its sub-directories?
*.*
looks Windows-style. I preferfind . -type f -name '*' -exec grep 'washer' \{\} \+
becausegrep -r
is prone not to do what you want: Either it does not recurse (because directories are usually not named like*.txt
) or it throws errors because directories not being regular files. – rexkogitans Sep 07 '18 at 06:11