[MacBook Air] デジカメで大量に撮った写真のファイル名についている日付と時刻部分を一発で変更する方法

IMG_20160705_143607
// 前書きが始まります。お急ぎの方は途中まで読み飛ばしてください。//

ちょっと早い夏休みで沖縄旅行に行ってきました。

シュノーケルやダイビングをしたかったのですがデジカメを持っていなかったので、どれを買おうかといろいろ探してみると1万円未満でハウジングも含めて購入できるものがありました。

それが GoPro もどきのようなアクションカメラです。


たとえばこんなやつ

僕が買ったのは 6,380 円のものでしたが、物によっては安い時には 5,000 円を切るなどまあ安いものがゴロゴロと見つかります。

せっかくキレイな沖縄の海で遊ぶんだから写真や動画を撮るためにデジカメは買いたい。でも本格的にやるわけでもないし何万円もかけるのは馬鹿らしい。

そんな人にこういうのはピッタリではないでしょうか。陸でも水の中でも撮れます。追加で買う必要があるのはバッテリーとマイクロ SD カードくらいでしょう。僕が買ったアクションカメラはバッテリーが最初から2個ついてました。

あとストラップは必要ですね。カメラにストラップを付けてそれを手首に引っ掛けておくことができるやつ。ダイビングするならマストです。

で、沖縄ではしゃいで写真や動画を撮りまくったのは良いのですが、デジカメの日付設定をやっていなくて撮った写真や画像の日付が1月1日になっていました。

おおーい!!

これくらい空気読めよー!!

と思いましたが、この辺りの機能も改善されるといいですね。安モノのアクションカメラだから仕方ありません。将来的にはスマホみたいに勝手に日付や時刻を合わせてくれると言うことなし!なんですが。

//  前書き終わり //

ここから本題です。

まず、MacBook Air にメモリーリーダーを取り付けて、写真や動画が入っているマイクロ SD カードを挿しこみます。

Photo 7-9-16, 10 34 50
こんな感じ

そうすると MacBook Air がこのマイクロ SD カードを認識します。ここからターミナルを立ちあげてコマンド操作を行っていきますが、この辺りは Linux の経験がない人には難しいかもしれません。ごめんなさい。

画像ファイルがある場所まで移動する

まず df コマンドで MacBook Air がマイクロ SD カードをどのように認識しマウントしているかチェックします。

$ df -h
Filesystem Size Used Avail Capacity iused ifree %iused Mounted on
/dev/disk1 233Gi 139Gi 93Gi 60% 36579291 24401955 60% /
devfs 193Ki 193Ki 0Bi 100% 668 0 100% /dev
map -hosts 0Bi 0Bi 0Bi 100% 0 0 100% /net
map auto_home 0Bi 0Bi 0Bi 100% 0 0 100% /home
/dev/disk2s1 60Gi 2.1Gi 58Gi 4% 17282 477046 3% /sdxc
/dev/disk5s1 14Gi 681Mi 14Gi 5% 0 0 100% /Volumes/NO NAME
$

マイクロ SD カードは東芝製の 16 GB ものですから、ファイル名を変更したい画像や動画が /Volumes/NO NAME 以下にあることがわかります。

cd コマンドで移動していきます。

$ cd /Volumes/NO\ NAME/
$ pwd
/Volumes/NO NAME
$ ls
CARDV
$ cd CARDV
$ pwd
/Volumes/NO NAME/CARDV
$ ls
MOVIE PHOTO
$

/Volumes/NO NAME/CARDV に MOVIE と PHOTO というディレクトリが見つかりました。

名前からして MOVIE には動画が、PHOTO には写真が入っていることが想像できます。

まず写真のある PHOTO ディレクトリに入って作業していくことにしましょう。

$ cd PHOTO/
$ pwd
/Volumes/NO NAME/CARDV/PHOTO
$ ls -1
2016_0101_234514_001.JPG
2016_0101_234517_002.JPG
2016_0101_235459_003.JPG
2016_0102_020411_001.JPG
2016_0102_020434_002.JPG
2016_0102_020441_003.JPG
2016_0102_023103_001.JPG
2016_0102_025007_001.JPG
2016_0102_025025_002.JPG
$

JPG 形式の画像であることがわかりますね。

ファイル名のパターンとしては、

  • 年(西暦)
  • 日付(4桁)
  • 時刻(時・分・秒、24時間表記)
  • 画像の番号(3桁)
  • 拡張子(JPG)

がアンダーバーとドットで結ばれています。

0101 とか 0102 とか7月に沖縄に行ってきたのにお正月の日付になってしまっています。

また 0101 の時刻が 23 時になっているのもおかしいです。これはデジカメが日本時刻でなく GMT (グリニッジ標準時、平たく言うとイギリス時間) になっているためです。

この写真をとった日は、2016 年の 7 月 6 日ですのでやることは以下の2つです。

  • 日付が 0101 のファイルは、0101 の箇所を 0706 に変換し、23 時の箇所を +9 して 08 に変換する
  • 日付が 0202 のファイルは、0102 の箇所を 0706 に変換し、02 時の箇所を +9 して 11 に変換する

です。

for でループにかけて ls で見つけて mv でファイル名を変更する

以下のコマンドを叩けばできます。まずは、日付が 0101 になっているものだけを変換してみます。

$ for f in `ls *0101*`; do mv $f ${f/0101_23/0706_08}; done
$ ls -1
2016_0102_020411_001.JPG
2016_0102_020434_002.JPG
2016_0102_020441_003.JPG
2016_0102_023103_001.JPG
2016_0102_025007_001.JPG
2016_0102_025025_002.JPG
2016_0706_084514_001.JPG
2016_0706_084517_002.JPG
2016_0706_085459_003.JPG
$

0101 のファイルが 0706 に変わっています。また時刻も 23 時から 08 時に変わっていることがわかります。

コマンドの意味は、

  • 0101 のファイルを ls コマンドで見つけろ
  • 見つかったファイル名の 0101_23 の箇所を 0706_08 に変更しろ

という指示を出しています。続いて日付が 0102 のファイルを操作します。

$ for f in `ls *0102*`; do mv $f ${f/0102_02/0706_11}; done
$ ls -1
2016_0706_084514_001.JPG
2016_0706_084517_002.JPG
2016_0706_085459_003.JPG
2016_0706_110411_001.JPG
2016_0706_110434_002.JPG
2016_0706_110441_003.JPG
2016_0706_113103_001.JPG
2016_0706_115007_001.JPG
2016_0706_115025_002.JPG
$

こちらも理屈はおんなじで、

  • 0102 のファイルを ls コマンドで見つけろ
  • 見つかったファイル名の 0102_02 の箇所を 0706_11 に変更しろ

という指示を出しています。

これでファイル名の修正ができました。この後、動画のファイル名を同じやり方で修正しました。

作業が終わったらマイクロ SD カードをコマンドでアンマウントします。

$ cd
$ sudo diskutil unmount /Volumes/NO\ NAME/
Volume NO NAME on disk5s1 unmounted
$

cd コマンドでどこか適当な場所に移動してから diskutil コマンドを実行します。マイクロ SD カードのどこかにいる状態だと diskutil コマンドが失敗します。

これでマイクロ SD カードをメモリーリーダーから取り出すことができます。他のマイクロ SD カードにもファイル名の変更が必要なファイルがあれば行います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください