- 締切済み
ファイル名を元にタイムスタンプを変更したい
ファイル名を元にタイムスタンプを変更したい はじめまして。 ディレクトリ内にある多数のファイルのタイムスタンプの変更したいと考えています。 ファイル数は3000以上あるため、ファイルひとつひとつ touch コマンドではとても間に合いません。 ディレクトリ内のファイル名には次のような規則があります。 ■ ファイル名の規則 20YYmmdd_HHiiss_カメラモデル名_IMG0001.JPG 20YYmmdd_HHiiss_カメラモデル名_IMG0002.JPG 20YYmmdd_HHiiss_カメラモデル名_MVI0003.MP4 20YYmmdd_HHiiss_カメラモデル名_MVI0004.MP4 つまり、ファイル名の先頭部分が更新日時を意味します。 ■ 更新日時がずれる理由 インターネット経由でファイル入手等により、更新日時が「撮影した日時」ではなく「入手した日時」になってしまいます。 「ファイルの更新日時よりも、ファイル名の先頭部分の時間が正確である。」という前提です。 ■ 一括で更新日時を変更 find, grep, touch コマンドを組み合わせれば、ディレクトリ内のファイルを一括処理できるような気がするのですが。 皆様の知恵をお借りできればと思います。 ■ 環境 ・OS Ubuntu 12.04.2 LTS ・シェル /bin/bash
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
回答No.1
for file in * do Y=${file:0:4}; m=${file:4:2}; D=${file:6:2}; H=${file:9:2}; M=${file:11:2}; S=${file:13:2} touch -d "$Y-$m-$D $H:$M:$S" $file done
お礼
お返事が遅くなりましてすみません。 見事にタイムスタンプの一括変更ができました!