我正在尝试重命名包含包含日期戳的文件的文件夹,如下所示:
string_DD-MM-YYYY_hhmm.pdf
到这种格式:
string_YYYY-MM-DD_hhmm.pdf
以便它们在按文件名排序时按日期排序。
示例:PB_KAZ_KtoNr_0463266665_01-02-2014_0341.pdf
应该变成PB_KAZ_KtoNr_0463266665_2014-02-01_0341.pdf
.
我找到了这个类似的问题但它是关于 DDMMYYYY 格式而不是 DD-MM-YYYY ,并且答案对于我的情况来说太复杂了。由于string
内容和长度(24 个字符)始终相同,因此一个简单的命令就足够了,按位置拆分和重新组装字符串。
提前致谢!
答案1
使用 Perl 的重命名(独立命令):
rename -n 's/(.*)_(.*)-(.*)-(.*)_(.*.pdf)/$1_$4-$3-$2_$5/' *.pdf
如果一切看起来都很好,请删除-n
。
答案2
这是一种粗略的方法,尤其是在有很多文件的情况下,但最基本的 awk 方法是:
它假设文件夹中没有任何其他 pdf,除了 string_DD-MM-YYYY_hhmm.pdf 之外,并且 string_ 部分的长度为 24 个字符
cd
到文件夹然后运行:
for i in *.pdf; do mv $i `\ls -1 $i | awk '{print substr ($0, 0, 24)}'``\ls -1 $i | awk -F[_.] '{print$(NF-1)}'| awk -F- '{print$3"-"$2"-"$1}'`.pdf; done