张芷铭的个人博客

ack 是专为程序员设计的代码搜索工具,自动忽略版本控制目录,支持按语言过滤文件。

安装

1
2
3
4
5
# Ubuntu/Debian
sudo apt install ack-grep

# macOS
brew install ack

基本语法

1
ack [选项] 搜索模式 [目录]

匹配控制

选项作用
-i忽略大小写
-w匹配完整单词
-v反向匹配
-Q纯文本匹配(不解析正则)

输出控制

选项作用
-l只显示文件名
-n显示行号
-c显示匹配次数

文件类型过滤

1
2
3
4
ack -t python "def"       # 只搜索 Python 文件
ack --java "public class" # 只搜索 Java 文件
ack -T js "function"      # 排除 JavaScript 文件
ack --help-types          # 查看支持的类型

目录过滤

1
2
ack --ignore-dir=vendor "config"
ack -g "utils"            # 只搜索文件名

示例

1
2
3
ack -t python -n "数据库连接"    # Python 文件中搜索并显示行号
ack -l "TODO"                   # 列出包含 TODO 的文件
ack --js -c "console.log"       # 统计每个文件中 console.log 出现次数

正则支持

支持 Perl 兼容正则(PCRE):

1
2
ack "func \w+"       # 匹配函数定义
ack "error|warn"     # 匹配 error 或 warn

Comments