約100個の.jpegイメージがありますが、そのファイルのタイムスタンプを変更したいと思います。私は曜日、時間などに基づいてタイムスタンプを変更する例をたくさん見ましたが、touch
私の場合は動作しません。
touch -d "-1969 days ago"
ファイルのいずれかで試しましたが、新しい時間ははるかに遅い2014年5月25日ではなく、2021年7月10日です。
日付タイムスタンプの時間部分(以下の例では午後2時30分)を維持しながら、ディレクトリ内のすべてのファイルのタイムスタンプを特定の日付(2014-05-25)に変更する方法はありますか?
たとえば、2009-01-02 02:30 PMはタイムスタンプを2014-05-25 2:30 PMに変更します。
ありがとうございます。
答え1
date
ここではGNU coreutilsとの組み合わせを使用できますtouch
。
私が正しく理解した場合は、HMSと同様に特定の日付が必要で、ファイルの時間を維持する必要があります。各ファイルは設定されません(たとえば、現在の値より300日前)。
2014-05-25
文字列をファイルから抽出された時間と組み合わせてこの時間を生成できますdate
。たとえば、次のようになります。
$ date +"2014-05-25 %T.%N" -r file.jpg
2014-05-25 18:06:28.277679656
次に、次のようにして組み合わせます。
for f in *.jpg; do touch -d "$(date +"2014-05-25 %T.%N" -r "$f")" "$f"; done
これはDSTとタイムゾーンを妨げる可能性があります。
%z
別のアプローチは、日付文字列の終わりまたはオプションに追加すること-u
ですdate
。
TZ=UTC0 touch -d "$(date -u +"2014-05-25 %T.%N" -r "$f")"
テスト
行動する前にテストし、テストし、テストしてください。確認ls --full-time
、タッチの代わりにエコなどのためのfind ... -printf
時間/日付オプションもあります。
時間をテキストファイルにバックアップすることもできます。
メモ:
質問から:
- 1969日前は2010年9月29日でした。
- 1969年以降の日付は2021年7月11日です(少なくとも私のタイムゾーンでは)。
- 現在の日付から2014年5月25日を取得するには、
"-1969 days ago"
2019年10月15日でなければなりません。
問題"-1969 days ago"
は、時間の前にマイナス記号があることです。
マイナス記号+マイナス記号=プラス記号
マイナス記号を削除または削除します。 ago
部分。
1969 days ago
2010年9月29日です。-1969 days