ack:只包含一个目录,但保留所有其他目录
我的文件夹结构如下所示:
/app /app/data ... /app/secondary /app/secondary/data
我想recursionsearch/app
,包括/app/data
。 但是我不想search/app/secondary/data
。 这是我迄今为止:
ack --ignore-dir=data searchtext ack --ignore-dir=secondary/data searchtext
第一个命令忽略了这两个目录,第二个命令忽略了这两个目录。 从应用程序文件夹中,我的ack命令应该是什么样子?
此答案适用于2之前的Ack版本,请参阅Ack> = 2版本的此答案 。
第一个是忽略两者,因为它们都有“数据”作为子目录,缺省情况下,acksearch子目录。 所以它会忽略这个名字的任何子目录。 不幸的是,你的第二种方式也行不通。 这适用于我:
ack -a searchtext -G '^(?!.*secondary/data.*).*$'
而不是-asearch所有文件,请参阅ack-grep –help = types仅search某些文件types,例如–type = text
旧版本的ack只能使用文件夹名称,而不能使用文件夹path。 从版本1.93_02开始,他们已经在
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
(来自betterthangrep.com/Changes )
你可以检查你的版本--version
:
ack --version