次の形式のファイル名を持つ写真でいっぱいのディレクトリがあります
IMG-20160305-WA0001.jpg
。撮影日はファイルタイトルにはっきりと表示されます。残念ながら、すべてのファイルには今日の修正日があります。正しい日付にリセットしたいです。
私はbash
名前の日付部分を抽出し、touch -a -m -t 201603050900 IMG-20160305-WA0000.jpg
各ファイルの日付部分を順番に抽出するスクリプトを考えています(各ファイルに正しい日付を使用)。時間は重要ではありません。
答え1
bash
文字列操作のみを使用して日付を抽出する例:
#!/bin/bash
for name in IMG-[0-9]*.jpg; do
touch -amt ${name:4:8}0900 "$name"
done
答え2
あなたの例ですべてのファイルを仮定すると持つ効果的なyyyymmdd
日付、ファイル名から日付を抽出して、引用符付きコマンドに適用できます。
#!/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で正規表現を使用してテストできます。