使用exiftool从文件名更新文件编号

时间:2014-08-12 19:59:30

标签: bash exif exiftool

我点击相机(富士x100s)上没有将filenumber标签存储在exif中的照片。虽然它会在文件名中添加此信息,例如DSCF0488.JPGDSCF0489.JPGDSCF0490.JPG

如何提取此编号并将其设置为文件编号?

1 个答案:

答案 0 :(得分:0)

要使用本机bash正则表达式从示例中的文件中提取数字,您可以执行以下操作:

for i in *.JPG; do 
    [[ $i =~ ([[:digit:]]+) ]] && echo ${BASH_REMATCH[1]}
done

从包含问题中文件的目录运行该循环将得到输出:

0488
0489
0490

因此,如果您有一个名为exif_script的工具可以将此信息添加到您的文件中,您可以执行以下操作:

for photo in *.JPG; do 
    if [[ $photo =~ ([[:digit:]]+) ]]; then
        file_number="${BASH_REMATCH[1]}"
        exif_script # set number to $file_number
    fi
done

如果你没有足够新的bash来支持正则表达式匹配,你可以使用sed:

for i in *.JPG; do file_number=$(echo "$i" | sed 's/[^0-9]\{1,\}\([0-9]\{1,\}\).JPG/\1/'); done

$file_number的值与第一段代码中的值相同,但这种方法应该适用于绝大多数平台。