0

Automator、Bash、および Exiftool の組み合わせを使用して、次のようなファイル名を取得し、0615090217.jpg作成日を2009:06:15 02:17:00.

パズルのピースのほとんどは機能しており、正規表現も機能しています。bash または他のツールの組み合わせを使用してそれを適用する方法がわかりません。sed が提案されているのを見てきましたが、それを適用する方法がわかりません。

次の正規表現はここで機能しますが、セットアップに適用する方法がわかりません:

  • 表現:/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(.*)\.[^.]+$/g

  • 置換:\n20$3:$1:$2 $4:$5:00\n\t

  • 文章:0615090217.jpg

Automator ワークフローのシェル スクリプトは次のようになります。

for f in "$@"
do
  FILENAME=$(basename "$f")
  MYDATE='2010:07:09 12:22:00'
  /usr/local/bin/exiftool -overwrite_original_in_place -preserve "-AllDates=${MYDATE}" "$f"
done

正規表現またはその他の方法を使用して、MYDATE をファイル名から抽出した日付に置き換えたいと考えています。私は近づいているように感じます。それは最後の点をつなぐだけです。

4

2 に答える 2

2

Exiftool はこれを単独で行うことができます。ファイルごとに exiftool を呼び出すため、プロセス全体が遅くなるだけなので、スクリプトは必要ありません。

次のようなものを試してください:
/usr/local/bin/exiftool -overwrite_original_in_place -preserve '-AllDates<${Filename;s/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(.*)\.[^.]+$/20$3:$1:$2 $4:$5:00/}' DIR

正規表現を持ち上げて貼り付けただけなので、もちろん最初にテストしてください。ここでの簡単なテストは正しく機能し、以下に出力されます。

c:\>exiftool -g1 -alldates X:\!temp\0615090217.jpg
---- IFD0 ----
Modify Date                     : 2012:08:30 22:25:33
---- ExifIFD ----
Date/Time Original              : 2013:18:08 19:04:15
Create Date                     : 2012:08:30 22:25:33

c:\>exiftool "-AllDates<${Filename;s/(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})(.*)\.[^.]+$/20$3:$1:$2 $4:$5:00/}" X:\!temp\0615090217.jpg
1 image files updated

c:\>exiftool -g1 -alldates X:\!temp\0615090217.jpg
---- IFD0 ----
Modify Date                     : 2009:06:15 02:17:00
---- ExifIFD ----
Date/Time Original              : 2009:06:15 02:17:00
Create Date                     : 2009:06:15 02:17:00
于 2016-01-05T03:16:15.570 に答える