我正在编写一个基于EXIF标签重命名JPG文件的Bash脚本。我的原始文件命名如下:
我需要将它们改名为这样:
我的bash脚本使用exiftool解析EXIF头并重命名文件。对于那些不包含EXIF创建日期的文件,我使用文件修改时间。
我卡在了位置上。我需要使用来自EXIF标签的GPS信息来确定国家和城市。exiftool提供了一个名为“GPS Position”的字段。在所有字段中,这似乎是确定位置最有用的字段。
谷歌提供了一个公共的地理位置API,但是需要使用这种格式的纬度/经度坐标:
API返回了相当多的信息(点击链接查看结果):
1.如何将GPS位置格式化为提供给Google地理定位等服务可接受的纬度/经度值?
2.如何解析JSON结果以一致的方式提取国家和城市,适用于许多不同类型的位置?使用Curl,然后呢?理想情况下,我想以一种方式处理美国位置,以另一种方式处理非美国位置。美国位置将被格式化为USA-STATE-City,而非美国位置将被格式化为COUNTRY-City。
我需要在一个bash脚本中完成所有这些。我已经查看了pygeocoder和gpsbabel,但它们似乎不能解决问题。有一些免费的网络工具可用,但它们不提供API(http://www.earthpoint.us/Convert.aspx)。
IMG_2110.JPG
IMG_2112.JPG
IMG_2113.JPG
IMG_2114.JPG
我需要将它们改名为这样:
2015-06-07_11-21-38_iPhone6Plus_USA-CA-Los_Angeles_IMG_2110.JPG
2015-06-07_11-22-41_iPhone6Plus_USA-CA-Los_Angeles_IMG_2112.JPG
2015-06-13_19-05-10_iPhone6Plus_Morocco-Fez_IMG_2113.JPG
2015-06-13_19-12-55_iPhone6Plus_Morocco-Fez_IMG_2114.JPG
我的bash脚本使用exiftool解析EXIF头并重命名文件。对于那些不包含EXIF创建日期的文件,我使用文件修改时间。
#!/bin/bash
IFS=$'\n'
for i in *.*; do
MOD=`stat -f %Sm -t %Y-%m-%d_%H-%m-%S $i`
model=$( exiftool -f -s3 -"Model" "${i}" )
datetime=$( exiftool -f -s3 -"DateTimeOriginal" "${i}" )
stamp=${datetime//:/-}"_"${model// /}
echo ${stamp// /_}$i
done
我卡在了位置上。我需要使用来自EXIF标签的GPS信息来确定国家和城市。exiftool提供了一个名为“GPS Position”的字段。在所有字段中,这似乎是确定位置最有用的字段。
GPS Position : 40 deg 44' 49.36" N, 73 deg 56' 28.18" W
谷歌提供了一个公共的地理位置API,但是需要使用这种格式的纬度/经度坐标:
40.7470444°, -073.9411611°
API返回了相当多的信息(点击链接查看结果):
https://maps.googleapis.com/maps/api/geocode/json?latlng=40.7470444,-073.9411611
我的问题是:1.如何将GPS位置格式化为提供给Google地理定位等服务可接受的纬度/经度值?
2.如何解析JSON结果以一致的方式提取国家和城市,适用于许多不同类型的位置?使用Curl,然后呢?理想情况下,我想以一种方式处理美国位置,以另一种方式处理非美国位置。美国位置将被格式化为USA-STATE-City,而非美国位置将被格式化为COUNTRY-City。
我需要在一个bash脚本中完成所有这些。我已经查看了pygeocoder和gpsbabel,但它们似乎不能解决问题。有一些免费的网络工具可用,但它们不提供API(http://www.earthpoint.us/Convert.aspx)。
$(( math expressions ))
可以帮助你。祝你好运。 - shellter| sed 's/\xc2\xb0([0-9]{1,2}).([NEWS])/ \1 0 \2/g;s/\xc2\xb0([NEWS])/ 0 0 \1/g;s/[^0-9NEWS]/ /g'
| awk '{if ($9=="NE") {printf ("%.4f\t%.4f\n",$1+$2/60+$3/3600,$5+$6/60+$7/3600)}' 但是我遇到了这个错误,有什么想法吗?: sed:RE错误:非法字节序列 - utt50
xc2
会给你什么?或者输出是非ASCII码吗?考虑到你需要在osx
上使用,建议安装gawk
并在其中完成所有操作。(也许我错过了为什么你需要3个步骤的原因(有时候简单的解决方案更好))。如果awk
可以处理xc2
(看起来是可以的),那么为什么不在那里完成整个操作呢?阅读关于match()
和它设置的变量的内容。你可以用它来复制大多数seds
的\1
捕获缓冲区。今晚很忙,所以不能提供更多帮助。但祝你好运!;-) - shellter