次の形式のファイル名の写真でいっぱいのディレクトリがあります:IMG-20160305-WA0001.jpg
。取得した日付は明らかにファイルタイトルにあります。残念ながら、すべてのファイルで変更された日付は今日です。それらを正しい日付に戻したいのですが。
名前の日付部分を抽出し、次に各ファイルのtouch -a -m -t 201603050900 IMG-20160305-WA0000.jpg
を順に抽出するbash
スクリプトを考えています(ファイルごとに正しい日付を使用)。時間は関係ありません。
日付を抽出するためだけにbash
文字列操作を使用する例:
#!/bin/bash
for name in IMG-[0-9]*.jpg; do
touch -amt ${name:4:8}0900 "$name"
done
あなたの例から、すべてのファイルhave有効なyyyymmdd
dateと仮定すると、ファイル名から日付を抽出し、引用されたコマンドでそれを適用できます。 :
#!/bin/bash
for name in IMG-*-W*.jpg
do
date="$(echo "$name" | sed -e 's/^IMG-//' -e 's/-W.*//')"
touch -a -m -t ${date}0900 "$name"
done
一部のファイルに有効な日付がない場合、それはより多くの作業です。ただし、正規表現を使用してbashでテストできます。