我的文件夹结构如下所示:
/app
/app/data
...
/app/secondary
/app/secondary/data
Run Code Online (Sandbox Code Playgroud)
我想递归搜索/app,包括/app/data.但我不想搜索/app/secondary/data.这就是我到目前为止:
ack --ignore-dir=data searchtext
ack --ignore-dir=secondary/data searchtext
Run Code Online (Sandbox Code Playgroud)
第一个命令忽略两个目录,第二个命令忽略它们.在app文件夹中,我的ack命令应该是什么样的?
Eri*_*ing 52
较旧版本的ack只能获取文件夹名称,而不是文件夹路径.从版本1.93_02开始,他们已将此功能添加到:
Run Code Online (Sandbox Code Playgroud)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
Run Code Online (Sandbox Code Playgroud)
rku*_*lla 24
这个答案适用于2之前的Ack版本,请参阅Ack版本的答案> = 2.
第一个是忽略它们,因为它们都有'data'作为子目录,ack默认搜索sub-dirs.因此它将忽略具有该名称的任何子目录.不幸的是,你的第二种方式也不起作用.这对我有用:
ack -a searchtext -G '^(?!.*secondary/data.*).*$'
Run Code Online (Sandbox Code Playgroud)
而不是-a搜索所有文件,请参阅ack-grep --help = types以仅搜索某些文件类型,例如--type = text
| 归档时间: |
|
| 查看次数: |
17017 次 |
| 最近记录: |