I have started using ack which is much faster than grep. However using ack I want to search for file name rather than file contents. Is there a way to do that?
Use the right tool for the right job. If you want to search for filename, use 'find':
$ # search for all *.txt file in current directory
$ find . -iname "*.txt"
-
1very true. "once you hold a hammer in your hand everything starts to look like a nail" :) – akira Apr 25 '10 at 15:05
-
2Well, ack (and grep) are nicer because you don't have to be explicit about regexes unless you want to. I usually just do a
find . | ack whatev.ext
– Ehtesh Choudhury May 25 '12 at 15:49 -
-
1find and ack behave differently since ack filters out a lot of results by default (contents of version control directories, compiled objects in a source repository) that would be included by find. The best hammer depends on the results you want. – Joshua Goldberg Jan 8 '15 at 22:05
-
1
ack -g REGEX
Print files where the relative path + filename matches REGEX
-
1
I agree it makes sense to use find if you're just searching for *.txt files. However, ack has powerful file-type detectiong features, so you can use
ack -f --perl
which will find all the Perl files, based on both the filename (*.pm, *.pl, *.t and *.pod) and the shebang line.