You need to enable JavaScript to run this app. 如何在Linux中生成带md5sum的递归文件列表并导出为CSV文件
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux中生成带md5sum的递归文件列表并导出为CSV文件

实现方案

ls的输出格式面向人类可读,无法直接输出结构化字段,解析容易出错,使用系统自带的find + stat + md5sum组合即可完成需求,不用安装额外工具,你可以直接使用下面的脚本:

#!/bin/bash
# 指定要遍历的目录,替换成你自己的路径
TARGET_DIR="/path/to/your/target/directory"
# 导出的CSV文件路径
OUTPUT_CSV="./file_list.csv"

# 写入CSV表头
echo "File Name,File Path,File Size (bytes),Created Date Time (dd/mm/yyyy hh:mm:ss),Modified Date Time (dd/mm/yyyy hh:mm:ss),md5sum" > "$OUTPUT_CSV"

# 遍历所有普通文件,兼容文件名含空格/特殊字符的场景
find "$TARGET_DIR" -type f -print0 | while IFS= read -r -d '' file; do
    # 提取文件名
    filename=$(basename "$file")
    # 提取文件大小(字节)
    filesize=$(stat -c "%s" "$file")
    # 格式化创建时间,文件系统不支持crtime时输出N/A
    create_time=$(stat -c "%w" "$file")
    if [ "$create_time" = "-" ]; then
        create_time="N/A"
    else
        create_time=$(date -d "$create_time" +"%d/%m/%Y %H:%M:%S")
    fi
    # 格式化修改时间
    modify_time=$(date -d "$(stat -c "%y" "$file")" +"%d/%m/%Y %H:%M:%S")
    # 计算md5哈希
    md5=$(md5sum "$file" | awk '{print $1}')
    
    # 处理文件名/路径包含逗号、双引号的场景,符合CSV规范
    escaped_filename=$(printf '%s' "$filename" | sed 's/"/""/g; s/^/"/; s/$/"/')
    escaped_filepath=$(printf '%s' "$file" | sed 's/"/""/g; s/^/"/; s/$/"/')
    
    # 写入CSV行
    echo "$escaped_filename,$escaped_filepath,$filesize,$create_time,$modify_time,$md5" >> "$OUTPUT_CSV"
done
使用说明
  • 把脚本中的TARGET_DIR替换为你需要遍历的实际目录路径
  • 给脚本添加执行权限:chmod +x generate_file_csv.sh
  • 运行脚本:./generate_file_csv.sh
  • 生成的CSV文件默认保存在当前目录的file_list.csv
注意事项
  • 如果你的文件系统不支持存储文件创建时间(比如部分旧的ext3、vfat格式),创建时间列会输出N/A
  • 大文件较多时md5计算耗时较长,属于正常情况
  • 脚本已经兼容文件名包含空格、逗号、双引号的特殊场景,输出符合CSV标准格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 20:06:05