ack: Excluding only one directory but keeping all others with the same name

…衆ロ難τιáo~ 提交于 2019-12-03 09:18:35
rkulla

This answer is for versions of Ack prior to 2, see This answer for versions of Ack >=2.

The first one is ignoring both because they both have 'data' as a sub-directory and ack searches sub-dirs by default. So it will ignore any sub-dir with that name. Unfortunately, your second way doesn't work either. This works for me:

ack -a searchtext -G '^(?!.*secondary/data.*).*$'

Instead of -a to search all files, see ack-grep --help=types to search for only certain file types, eg --type=text

The older versions of ack can only take the folder name, not the folder path. As of version 1.93_02, they've added this ability in:

1.93_02     Wed Oct  6 21:39:58 CDT 2010
   [ENHANCEMENTS]
   The --ignore-dir option now can ignore entire paths relative
   to your current directory.  Thanks to Nick Hooey.  For example:

       ack --ignore-dir=t/subsystem/test-data

(From betterthangrep.com/Changes)

You can check which version you have with --version:

ack --version
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!