0

我在没有将filenumber标签存储在 exif 中的相机(富士 x100s)上单击照片。尽管它在文件名中添加了这些信息,例如DSCF0488.JPG,、、、。DSCF0489.JPGDSCF0490.JPG

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

4

1 回答 1

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将与第一段代码中的值相同,但这种方法应该适用于绝大多数平台。

于 2014-08-12T23:33:40.363 回答