我想patterns在一个directory包含recursive directories和中搜索多个files.
我知道命令grep如下
grep -e '(pattern1)|(pattern2)'
Run Code Online (Sandbox Code Playgroud)
要么
grep -r -E 'string1|string2|string3' /var/www/http
Run Code Online (Sandbox Code Playgroud)
使用ackor 的命令是什么ag?
fed*_*qui 14
这应该足够了:
ack -R 'string1|string2'
Run Code Online (Sandbox Code Playgroud)
由于-R是默认的,你可以省略:
ack 'string1|string2'
Run Code Online (Sandbox Code Playgroud)
来自man ack:
-r,-R, - recurse
递归到子目录.这是默认设置,只是为了与grep兼容.你也可以用它来转动 - 没有递减.
如果你想从文件中获取模式,比如/path/to/patterns.file,你可以使用:
ack "$(cat /path/to/patterns.file)"
Run Code Online (Sandbox Code Playgroud)
或者相当于:
ack "$(< /path/to/patterns.file)"
Run Code Online (Sandbox Code Playgroud)
我找不到与之完全相同的东西grep -f.
小智 7
ack 命令还可以与管道一起串连。例如,第一个 ack 找到包含pattern1的文件,然后将其通过管道传输到另一个ack以仅在这些文件中搜索pattern2
ack -l 'pattern1' | ack -x 'pattern2'
Run Code Online (Sandbox Code Playgroud)
-l参数表示仅列出匹配的文件(而不是匹配的文本)。-x参数意味着仅搜索通过管道传递给它的文件。这类似于缩小下一次 ack 搜索的文件范围。
ack -l 'pattern1' | ack -xl 'pattern2' | ack -x 'pattern3'
Run Code Online (Sandbox Code Playgroud)
这是AND运算符,而不是其他解决方案中给出的 OR 运算符。
| 归档时间: |
|
| 查看次数: |
5911 次 |
| 最近记录: |