首页 > 解决方案 > 从多个文件中删除时间戳

问题描述

有没有一种快速而聪明的方法可以从具有不同名称的多个文件中删除各种时间戳?时间戳格式始终保持不变,尽管值不同。我的文件的一个例子是......

A_BB_CC_20180424_134312
A_B_20180424_002243
AA_CC_DD_E_20180424_223422
C_DD_W_E_D_20180423_000001

与预期的输出

A_BB_CC
A_B
AA_CC_DD_E
C_DD_W_E_D

请注意,最后一个文件具有不同的时间戳,我不介意这是删除特定日期的时间戳还是全部或两个变体。我的问题是我想不出时间值不断变化的代码:(

提前致谢

编辑 - 添加编辑以显示为什么这不是 Tripleee 认为的重复。他的重复链接是针对具有相同前缀的文件,我的问题是关于具有不同名称的文件,所以答案是不同的。

标签: bash

解决方案


使用删除文件名末尾的参数扩展%%bash ism

for i in /my/path/*; do mv  "$i" "${i%%_2018*}"; done

这取决于以2018...


使用 awk:

for i in /my/path/*; do mv "$i" $(awk -v FS=_ 'NF-=2' OFS="_" <<< "$i"); done

awk脚本基于字段分隔符_。它打印文件名,没有最后 2 个字段表示时间戳。


推荐阅读