OS X 10.6.8でファイルの作成日をバッチシフトする方法を教えてください。


5

一連のファイルの作成日を指定の日付に変更する方法については質問していません。したい シフト 指定した期間の日付、たとえば47732400秒

これを使用して達成できますか touch それともBASHに他に何かありますか?

回答:


5

目標修正時間が元の作成時間より前である場合にのみ、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:作成時間を変更する


Lauri Ranta、あなたは聖人です!
bernk

あなたのスクリプトがうまくいかないことを認めなければなりません、 しかし 最も重要なことは、あなたが私にSetFileを紹介してくれ、そして私の道をうまくいってくれたということです。私はまた、いくつかの変数を囲む引用符の背後にある理由を理解していません。 bashスクリプティングはまったく新しいものです。
bernk

ファイル名にスペースが含まれていても機能することを保証するための引用です。
ckhan

最終的には、スクリプトが私には機能しないという以前のコメントも取り戻します。します。私は最初私が間違ったことをしたのかわかりませんが、それは私のせいでした。再度、感謝します!誤った日付設定でカメラで撮影されたたくさんのビデオファイルを修正することができます。
bernk

誰かがLinuxに相当するものを探しているのであれば、forループの修正されたコマンドは次のとおりです。 old=$(stat -c %Y "$f") そして touch -t $(date -d @$(($old - 47732400)) +%Y%m%d%H%M.%S) "$f"
Ale

0

参照ファイル/日付を使用してファイル日付をシフトするための以前の回答を再利用および拡張する(古い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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.