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

Linux下如何将exiftool生成的分行EXIF TXT文件转换为CSV格式

转换方法

方法1:直接用ExifTool原生导出CSV(优先推荐)

你完全可以跳过导出TXT的步骤,直接用ExifTool生成符合要求的CSV文件,执行以下命令即可:

exiftool -csv -FileName -DateTimeOriginal -FileSize *.JPG > 输出清单.csv

如果需要同时处理子目录里的音视频、图片文件,可以加上-r参数:

exiftool -r -csv -FileName -DateTimeOriginal -FileSize -ext JPG -ext MP4 -ext MOV ./ > 输出清单.csv

生成的CSV可以直接满足你的格式要求,不需要二次转换。

方法2:已有TXT文件时用Python脚本转换

如果已经生成了多行结构的TXT文件,可以用下面的Python脚本处理,把脚本和你的TXT文件放在同一目录,修改脚本里的输入输出文件名即可运行:

# 配置输入输出文件名
input_txt = "你的EXIF导出文件.txt"
output_csv = "文件清单.csv"

# 初始化变量
current_file = {}
result = []

with open(input_txt, 'r', encoding='utf-8') as f:
    lines = f.readlines()

for line in lines:
    line = line.strip()
    if not line:
        continue
    # 识别新文件的分隔行
    if line.startswith('========'):
        if current_file:
            result.append(current_file)
        current_file = {}
    # 提取文件名
    elif line.startswith('File Name'):
        current_file['filename'] = line.split(maxsplit=2)[-1].strip()
    # 提取拍摄时间
    elif line.startswith('Date/Time Original'):
        current_file['date'] = line.split(maxsplit=3)[-1].strip()
    # 提取文件大小
    elif line.startswith('Size'):
        current_file['size'] = line.split(maxsplit=1)[-1].strip()
# 加入最后一个文件的信息
if current_file:
    result.append(current_file)

# 写入CSV
with open(output_csv, 'w', encoding='utf-8-sig') as f:
    f.write("filename,date,size\n")
    for item in result:
        f.write(f"{item.get('filename','')},{item.get('date','')},{item.get('size','')}\n")

方法3:Windows系统无需额外软件,用PowerShell处理

如果你不想安装Python,可以直接用系统自带的PowerShell执行以下命令,修改对应的输入输出路径即可:

$inputPath = "你的EXIF导出文件.txt"
$outputPath = "文件清单.csv"
$content = Get-Content $inputPath -Encoding UTF8
$output = @("filename,date,size")
$current = [PSCustomObject]@{filename="";date="";size=""}
foreach ($line in $content) {
    $line = $line.Trim()
    if ($line -like "========*") {
        if ($current.filename) {
            $output += "$($current.filename),$($current.date),$($current.size)"
        }
        $current = [PSCustomObject]@{filename="";date="";size=""}
    } elseif ($line -like "File Name*") {
        $current.filename = $line.Substring(20).Trim()
    } elseif ($line -like "Date/Time Original*") {
        $current.date = $line.Substring(20).Trim()
    } elseif ($line -like "Size*") {
        $current.size = $line.Substring(20).Trim()
    }
}
if ($current.filename) {
    $output += "$($current.filename),$($current.date),$($current.size)"
}
$output | Out-File $outputPath -Encoding UTF8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 19:24:09