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

如何结合find -printf与wc -l生成含文件元数据和行数的CSV

合并文件元数据与行数到同一CSV文件的方法

可以通过单次文件遍历同时生成你需要的所有字段,避免两次扫描目录浪费资源,直接输出到目标文件:

find . -type f -exec sh -c '
    # 统计文件行数,仅获取数字部分
    line_count=$(wc -l < "$1")
    # 生成对应字段:文件名 | 所在目录 | 块大小(KB) | 完整路径 | 行数
    printf "%s | %s | %s | %s | %d\n" \
        "$(basename "$1")" \
        "$(dirname "$1")" \
        "$(stat -c %k "$1")" \
        "$1" \
        "$line_count"
' sh {} \; > /tmp/out.csv

命令说明:

  • find . -type f:遍历当前目录下所有普通文件
  • -exec sh -c '...' sh {} \;:对每个找到的文件执行内嵌的shell脚本,{}代表当前文件的完整路径
  • wc -l < "$1":统计文件行数,通过重定向输入避免wc输出文件名,只保留行数数字
  • basename "$1":提取文件名,对应原-fprintf中的%f字段
  • dirname "$1":提取文件所在目录,对应原-fprintf中的%h字段
  • stat -c %k "$1":获取文件占用的块数(单位KB),对应原-fprintf中的%k字段
  • $1:直接使用文件完整路径,对应原-fprintf中的%p字段
  • printf:按指定格式拼接所有字段,用|分隔后输出到目标文件

验证输出

执行后查看前几行:

head -2 /tmp/out.csv

应该得到类似结果:

gettext | ./share/sensible-utils/bin | 4 | ./share/sensible-utils/bin/gettext | 3
inherits_browser.js | ./share/javascript/inherits | 4 | ./share/javascript/inherits/inherits_browser.js | 27

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:17:31