I have a directory listing as follows (given by ls -la):

total 8
drwxr-xr-x   6 <user>  <group>  204 Oct 18 12:13 .
drwxr-xr-x   7 <user>  <group>  238 Oct 18 11:29 ..
drwxr-xr-x  14 <user>  <group>  476 Oct 18 12:31 .git
-rw-r--r--   1 <user>  <group>  601 Oct 18 12:03 index.html
drwxr-xr-x   2 <user>  <group>   68 Oct 18 12:13 test
drwxr-xr-x   2 <user>  <group>   68 Oct 18 12:13 test2

Running ack . -f prints out the files in the directory:


How can I get ack to print out the directories in the directory? I want to ignore the .git directory (which I understand is default behavior for ack). On that note, how can I ignore certain directories?

I am using ack 1.9.6 on Mac OSX 10.8.2.

  • 1
    Why do you want to use ack to list things instead of ls? – Alan Shutko Oct 18 '12 at 16:51
  • I need something I can readily pipe into xargs. My options are find --print0 (weird syntax, trying to stay away from it) and ack --print0, both of which readily pipe into xargs -0. – knpwrs Oct 18 '12 at 16:56
  • So how is ack --print0 less weird than find -print0? If you find a command hard to type/remember, make an alias. – user1686 Oct 18 '12 at 16:59
  • find . -name .git -a -type d -prune -o -type f -print0 simplifies to ack . -f --print0. Likewise, I want to find a way to simply find . -name .git -a -type d -prune -o -type d -print0 into its ack equivalent. – knpwrs Oct 18 '12 at 17:09

You can't. ack is only for files, not directories. It is a text search tool, not a general purpose file finder.

To ignore directories, use the --ignore-dir option.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.