Linux下比ack更快的ag搜索命令详解

2024-12-25  本文已影响0人  青枫教学

简介

ag 命令(The Silver Searcher)是一款用 C 编写的快速且对开发人员友好的文本搜索工具,针对源代码搜索进行了优化。它与 ack 类似,但速度更快,因此深受开发人员喜爱,可用于搜索代码库。

它最初是 ack 的克隆版,但此后其功能集略有不同。在典型使用中,agack 快 5-10 倍,使用 Pthreads 来利用多个 CPU 核心并行搜索文件。

默认情况下,ag 将忽略文件名匹配 .gitignore.hgignore.ignore,这些文件可以在正在搜索的目录中的任何位置。

安装

sudo apt update
sudo apt install silversearcher-ag
sudo yum install epel-release
sudo yum install the_silver_searcher
sudo dnf install the_silver_searcher
brew install the_silver_searcher

常用选项

echo "foo\nbar\nbaz" | parallel "ag {} ."

# 将会启用三个实例并行搜索foo、bar、baz

~/.vimrc 中配置:

set grepprg=ag\ --vimgrep\ $* set grepformat=%f:%l:%c:%m
ag -- --foo

示例用法

在当前目录下搜索

ag "<pattern>"

# 如:
ag "function"

指定文件的类型搜索

ag "pattern" --python

# 仅在 Python 文件中搜索“class”

列出 ag 能识别的文件类型

ag --list-file-types

忽略大小写

ag -i "pattern"

在指定文件或目录中搜索

ag "pattern" path/to/file_or_dir

仅显示匹配到的文件名

ag -l "pattern"

统计匹配到的次数

ag -c "pattern"

显示行号

ag -n "pattern"

搜索时排除指定的文件或目录

ag "pattern" --ignore-dir=<dir_name>

# 如:
ag "TODO" --ignore-dir=node_modules

使用正则表达式搜索

ag "^class\s\w+"

# 匹配以 class 开头、后跟空格和单词的行

反向匹配(显示不匹配的行)

ag -v "pattern"

限制搜索的深度

ag "pattern" --depth=2

仅在 JavaScript 文件中搜索

ag "debugger" --js

同时在多个文件或目录中搜索

ag UNIX foo bar foobar

# UNIX 是要搜索的字符串
# 后面都是文件名
上一篇 下一篇

猜你喜欢

热点阅读