ag

ack 的升級版,C語言編寫,更快更人性化

補充說明

摘自 https://github.com/ggreer/the_silver_searcher 項目的 Readme.md

  • 它比ack快一個數量級。
  • 它忽略了你的 .gitignore.hgignore 中的文件模式。
  • 如果你的源碼庫裏有你不想搜索的文件,只要把它們的模式添加到一個.ignore文件裏。(cough .min.jscough*)
  • 這個命令的名字比ack短33%,而且所有的鍵都在主行上!

語法

1ag [options] pattern [path ...]
2ag [可選項] 匹配模式 [路徑...]

選項

 1輸出選項:
 2     --ackmate            以 AckMate-parseable 的格式顯示結果
 3  -A --after [LINES]      顯示匹配行之後的行(默認2行)
 4  -B --before [LINES]     顯示匹配行之前的行(默認2行)
 5     --[no]break          不同文件中匹配到的內容新建一行顯示(默認開啓)
 6  -c --count              只顯示每個文件中匹配到的數量 (通常與匹配行數不同)
 7     --[no]color          在結果中打印顏色代碼(默認啓用)
 8     --color-line-number  行號的顏色代碼(默認值爲:1;33)。
 9     --color-match        匹配結果的顏色代碼(默認值爲:30;43)。
10     --color-path         路徑名稱的顏色代碼(默認值爲:1;32)
11     --column             打印結果中的列號
12     --[no]filename       打印文件名(除非搜索單個文件,否則啓用)。
13  -H --[no]heading        在每個文件匹配前輸出文件名(默認開啓)
14  -C --context [LINES]    顯示匹配行上下兩行(默認2行)
15     --[no]group          和這些一樣: --[no]break --[no]heading
16  -g --filename-pattern PATTERN 打印匹配PATTERN的文件名
17  -l --files-with-matches 顯示包含匹配的文件名(不顯示匹配的行)
18  -L --files-without-matches  只顯示不包含匹配項的文件名
19     --print-all-files    打印所有搜索到的文件的標題,甚至那些不包含匹配的文件。
20     --[no]numbers        打印行號。默認情況是在搜索流時省略行號。
21  -o --only-matching      只輸出每行匹配的部分
22     --print-long-lines   在很長的行上打印匹配信息(默認:>2k字符)。
23     --passthrough        當搜索一個流時,打印所有的行,即使它們不匹配。
24     --silent             抑制所有的日誌信息,包括錯誤
25     --stats              打印統計(掃描的文件、花費的時間等)。
26     --stats-only         打印統計信息,不打印其他信息(與搜索單個文件時的--計數相同)。
27     --vimgrep            像vim的:vimgrep /pattern/g那樣打印結果(它報告每一行的匹配結果)
28  -0 --null --print0      用null分隔文件名(用於'xargs -0')。
29
30搜索選項:
31  -a --all-types          搜索所有文件(包括隱藏文件)
32  -D --debug              可笑的調試(可能沒有用)
33     --depth NUM          目錄搜索最大深度(默認25)
34  -f --follow             跟隨鏈接進行搜索
35  -F --fixed-strings      爲了與grep兼容,--literal的別名。
36  -G --file-search-regex  根據正則匹配搜索指定類型的文件
37     --hidden             搜索隱藏文件 (但遵從 .*ignore 文件)
38  -i --ignore-case        不區分大小寫匹配
39     --ignore PATTERN     忽略匹配 PATTERN 的文件/目錄(也允許使用文字文件/目錄名稱)
40     --ignore-dir NAME    爲了與ack兼容,--ignore的別名
41  -m --max-count NUM      在一個文件中最大匹配的數量(默認: 10,000)
42     --one-device         不跟隨其他設備的鏈接搜索
43  -p --path-to-ignore STRING 在STRING使用.ignore文件
44  -Q --literal            不要將PATTERN解析爲正則表達式
45  -s --case-sensitive     敏感地匹配案例
46  -S --smart-case         不區分大小寫匹配,除非 PATTERN 包含大寫字符
47     --search-binary      搜索二進制文件
48  -t --all-text           搜索所有文本文件(不包括隱藏文件)
49  -u --unrestricted       搜索所有文件 (忽略 .ignore, .gitignore, 比如:搜索二進制和隱藏文件)
50  -U --skip-vcs-ignores   忽略VCS的忽略文件(指的是 .gitignore,.hgignore;仍然遵從.ignore)。
51  -v --invert-match       反向匹配
52  -w --word-regexp        只匹配整個單詞
53  -W --width NUM          在NUM字符後截斷匹配行
54  -z --search-zip         搜索壓縮文件中的內容
55
56文件類型:
57搜索可以限制在某些類型的文件中,例如:
58   ag --html needle   結果輸出到指定類型文件
59   - 在後綴爲 .htm、.html、.shtml 或 .xhtml 的文件中搜索“needle”
60
61有關支持的文件類型的列表,可以運行:
62  ag --list-file-types  列出支持的文件類型

實例

列出當前目錄下包含 npm 的文件

1➜  vue-project ag npm ./
2README.md
316:npm install
422:npm run dev
528:npm run build

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: