回答:
目標修正時間が元の作成時間より前である場合にのみ、touchは作成時間を変更します。
for f in ~/Desktop/*; do
old=$(stat -f %B -t %s "$f")
touch -t $(date -r $(($old - 1234567)) +%Y%m%d%H%M%S) "$f"
done
SetFileは常に作成時間を変更します。 Xcodeの環境設定からダウンロードできるコマンドラインツールパッケージが付属 アップルのWebサイト 。
for f in ~/Desktop/*; do
old=$(stat -f %B -t %s "$f")
new=$(date -r $(($old + 1234567)) '+%m/%d/%Y %H:%M:%S')
SetFile -d "$new" -m "$new" "$f"
done
stat -f %B -t %s
:生年月日のフォーマット、エポックからの経過時間の秒フォーマット
date -r
:エポック以降の再フォーマット秒数
touch -t
:アクセス時間と変更時間を変更する
SetFile -d
:作成時間を変更する
old=$(stat -c %Y "$f")
そして touch -t $(date -d @$(($old - 47732400)) +%Y%m%d%H%M.%S) "$f"
。
参照ファイル/日付を使用してファイル日付をシフトするための以前の回答を再利用および拡張する(古いGoProは常に2009年に時間をリセットします)。
ref_file=GOPR3440.MP4
new_time_for_that_file=0327160015 #date's format: 27th March 2015, 16:00
ref_file_timestamp=`stat -f %B -t %s "$ref_file"`
new_time_timestamp=`date -j $new_time_for_that_file +%s`
time_diff=$[$new_time_timestamp - $ref_file_timestamp]
for f in *; do
old=$(stat -f %B -t %s "$f")
new=$(date -r $(($old + $time_diff)) '+%m/%d/%Y %H:%M:%S')
SetFile -d "$new" -m "$new" "$f"
done