使用文件名中的日期更改文件修改日期

使用文件名中的日期更改文件修改日期

根据文件名中提到的日期更改多个文件的上次修改日期

文件是

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

需要它的原因:我正在迁移一些文章,这里每个文件都是一篇要发布的文章。并且已经可用的自定义导入实用程序使用文件的上次修改日期作为文章发布日期。希望这会有所帮助并明确其原因。

答案1

POSIXly:

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

相关内容