首页 > 解决方案 > 正则表达式交换日期

问题描述

我有许多在名称中包含日期的文件,格式如下:

filename - day month year (e.g. myfile - 22 August 2017)

我想做的是将它的格式设置为:

filename - yearmonthday (e.g. myfile - 20170822)

寻找一种在 bash 中执行此操作的方法。

非常感谢 - 科林

标签: regexbash

解决方案


使用 bash 参数扩展和(GNU?)日期

$ f="myfile - 22 August 2017"
$ d=${f##* - }; echo "$d"
22 August 2017
$ new_d=$(date -d "$d" "+%Y%m%d")
$ echo mv "$f" "${f/%$d/$new_d}"
mv myfile - 22 August 2017 myfile - 20170822

推荐阅读