如何通过GitHub CLI提取仓库总数(规避--limit上限)
提取GitHub CLI搜索仓库的总数方法
问题背景
gh的--limit选项存在上限,通过--json结合jq统计仓库数量不仅受限于该上限,还耗时较长。例如执行gh search repos -L 1000 language:Raku --created 2023 --json name --jq length需约18秒才能得到结果,但直接执行gh search repos language:Raku --created 2023仅需3秒,结果头部会显示总数——但管道输出时该头部信息会丢失。对于总数超过上限的查询(比如2023年Fortran语言仓库总数为4067),用最大-L 1000的JSON/jq方式只能返回1000,无法获取真实总数。
可行解决方案
1. 关闭分页后用文本工具提取头部总数
gh默认启用分页器,先关闭分页,再通过grep/awk匹配提取头部的数字:
# 用grep+cut提取 gh search repos language:Fortran --created 2023 --no-pager | grep -oP '^\d+ repositories' | cut -d' ' -f1 # 用awk直接提取 gh search repos language:Fortran --created 2023 --no-pager | awk '/^[0-9]+ repositories/{print $1}'
原理:关闭分页后,输出的第一行就是类似4067 repositories的统计信息,通过正则匹配提取数字即可。
2. 调用GitHub API直接获取总数
通过gh直接调用GitHub搜索API,API返回的结果中包含total_count字段,不受CLI的--limit限制:
gh api search/repos -f q="language:Fortran created:2023" --jq '.total_count'
这种方式速度更快,无需处理文本输出,且结果准确可靠,不受CLI输出格式变化的影响。
内容的提问来源于stack exchange,提问作者user2023370
相关产品推荐
相关产品推荐

