4

From everything I can read

ack-grep foo

should search through all files in the current directory and subdirectories for the term "foo".

However, the closest I can get is

ack-grep foo *

Which returns all results that have "foo" in the current directory.

Why does the first command not work? I use ack version 1.92.

5
  • Is your ack-grep the same as ack? If so, which version?
    – slhck
    Commented Aug 7, 2012 at 21:12
  • I symlinked ack to ack-grep. The verison is 1.92
    – theicfire
    Commented Aug 7, 2012 at 21:16
  • Do you have ACK_OPTIONS set or an ackrc file? I.e. does it work with --noenv set?
    – slhck
    Commented Aug 7, 2012 at 21:22
  • Nothing from echo $ACK_OPTIONS | ~/.ackrc does not exit | ack-grep --noenv stuff does not work, while ack-grep --noenv stuff * does
    – theicfire
    Commented Aug 7, 2012 at 21:41
  • In general, you don't specify files on the command line with ack, which is what you're doing with ack foo *. When you specify files, then you're telling ack to not do any of its magic file selecting, which includes recursing into lower directories. Commented Aug 8, 2012 at 12:22

1 Answer 1

3

It depends on what is actually in foo, or if you have told ack-grep to recognize it as a type

# using  ack-grep Version 1.92

mkdir junk; cd junk

echo 'hello' > wango
ack-grep hello       #  nothing found, because 'wango' is an unknown type

echo -e '#!/bin/bash\nhello' > wango
ack-grep hello       #  found, because '#!/bin/bash` identifies a known type
 wango
 2:hello

echo 'hello' > wango
ack-grep -a hello    #  found, because '-a' selects all files (almost all)
 wango
 1:hello

From man ack-grep

ack-grep is intelligent about the files it searches. It knows about certain file types, based on both the extension on the file and, in some cases, the contents of the file. These selections can be made with the --type option.

With no file selections, ack-grep only searches files of types that it recognizes. If you have a file called foo.wango, and ack-grep doesn't know what a .wango file is, ack-grep won't search it.

The -a option tells ack-grep to select all files, regardless of type.

Some files will never be selected by ack-grep, even with -a, including:

· Backup files: Files matching #*# or ending with ~.

· Coredumps: Files matching core.\d+

However, ack-grep always searches the files given on the command line, no matter what type. Furthermore, by specifying the -u option all files will be searched.

1

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .