问题:用ack搜索多个模式(单词)?

我想在包含recursive directoriesfilesdirectory中搜索多个patterns

我知道grep的命令如下

grep -e '(pattern1)|(pattern2)'

或者

grep -r -E  'string1|string2|string3' /var/www/http

使用ackag的命令是什么?

解答

这应该足够了:

ack -R 'string1|string2'

由于-R是默认值,您可以省略它:

ack 'string1|string2'

来自man ack:

-r, -R, --recurse

递归到子目录。这是默认设置,只是为了与 grep 兼容。你也可以用它来关闭 --no-recurse 。


如果你想从文件中获取模式,比如 /path/to/patterns.file,你可以使用:

ack "$(cat /path/to/patterns.file)"

或等效地:

ack "$(< /path/to/patterns.file)"

我找不到与grep -f完全等价的东西。

Logo

更多推荐