This is the command that I am trying to run.
grep -r "printf" *.c
I am trying to get all the printf lines from all .c
files present in my cwd. As of now, my current directory is Desktop, and I have at least 10-15 .c
files in my sub-directories under Desktop, but this command doesn't show any matches at all. So how do I make this work in this case?
Best Answer
If you do:
the shell will expand
*.c
to all files/directories ending in.c
in your current directory, if no such file/directory exists, the pattern will be treated literally (presumably you don't havenullglob
set).As you can see, your current pattern is never going beneath the current directory as you don't have any
.c
file in the current directory or if there are any, they don't haveprintf
in them, leading to the empty output.You need to use
--include
to search in selective files only, and also-r
to traverse recursively:The above will search in all
.c
files for the string (pattern)printf
, recursively starting from the current directory.if you want to follow all symlinks: