You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何统计.tar.gz压缩包内每个txt文件的行数并输出对应列表

统计.tar.gz压缩包内各txt文件行数的实现方案

以下方案适用于Linux、macOS、WSL等类Unix环境,无需提前解压整个压缩包,直接基于流式处理完成统计:

方案1:单命令高效实现(仅需读取一次压缩包,适合大文件场景)

使用tar自带的--to-command参数,对每个压缩内的文件单独执行统计逻辑:

tar zxf 你的压缩包名称.tar.gz --to-command='wc -l | sed "s|^|$TAR_FILENAME |"'
  • 逻辑说明:--to-command会让tar将每个解压出的文件内容传递给后续命令处理,内置环境变量$TAR_FILENAME对应当前处理的压缩内文件名,wc -l统计行数后通过sed将文件名拼接在输出行首,最终直接输出符合要求的「文件名 行数」格式。

方案2:高兼容实现(适配不支持--to-command参数的旧版本tar环境)

先枚举压缩包内所有txt文件,再逐文件统计行数:

tar ztf 你的压缩包名称.tar.gz | grep '\.txt$' | while read fname; do
    line_count=$(tar zxf 你的压缩包名称.tar.gz -O "$fname" | wc -l)
    echo "$fname $line_count"
done
  • 逻辑说明:tar ztf先列出压缩包内所有文件路径,通过grep过滤出txt后缀的文件,循环读取每个文件名后用-O参数将对应文件内容输出到标准输出,交给wc -l统计行数后拼接输出。

若压缩包内的txt文件名包含空格,可在方案2的循环前添加IFS=$'\n'避免文件名被截断。


内容的提问来源于stack exchange,提问作者StOMicha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 16:48:00