ファイル名の日付を使用してファイル変更日を変更する

ファイル名の日付を使用してファイル変更日を変更する

ファイル名に記載されている日付に基づいて複数のファイルの最後の変更日を変更します。

ファイルは

04-01-1981 XXXXXYYYYZZZZ.xml
19-11-1982 XXXXXYYYYZZZZ.xml
25-12-1981 XXXXXYYYYZZZZ.xml

必要な理由:各ファイルが公開する記事である記事の一部を移行しています。そして、すでに利用可能なカスタムインポートユーティリティは、ファイルの最後の変更日を記事の公開日として使用します。これが役に立つことを願ってその理由を明確にしてください。

答え1

POSIX的に:

for file in ??-??-????' '*.xml; do
  date=${file%% *}
  year=${date##*-}
  day=${date%%-*}
  month=${date%-*}
  month=${month#*-}
  touch -d "$year-$month-$day 00:00:00" -- "$file"
done

を使用すると、zsh次のように短縮できます。

for f (??-??-????' '*.xml(N))
  touch -d "$f[7,10]-$f[4,5]-$f[1,2] 00:00:00" -- $f

関連情報