用bash将时间戳删除为文件名?

时间:2018-07-20 13:38:02

标签: bash awk sed sh

我正在寻找一种通过给时间戳记更改文件名的方法。就是这样的:

2018-07-20_15:30:27_m_group_types.csv

这就是我希望的样子:

m_group_types.csv

我真的不知道如何...

4 个答案:

答案 0 :(得分:2)

请您尝试以下。

echo "2018-07-20_15:30:27_m_group_types.csv" | sed -E 's/.*[0-9]+:[0-9]+:[0-9]+_//'

使用awk

echo "2018-07-20_15:30:27_m_group_types.csv" | awk 'match($0,/.*[0-9]+:[0-9]+:[0-9]+_/){print substr($0,RSTART+RLENGTH)}'

答案 1 :(得分:2)

您可以尝试cut

echo "2018-07-20_15:30:27_m_group_types.csv" | cut -d "_" -f3-

输出:

m_group_types.csv


说明:

-d:对于定界符,在这种情况下,我们选择"_"

-f:选择要剪切的 field ,在这种情况下,定界符"_" 字符串分隔为2018-07-20_15:30:27_m_group_types.csv 1}}字段:

字段1:5

字段2:2018-07-20

字段3:15:30:27

字段4:m

字段5:group

因此,使用types.csv,我们选择从-f3-切入。

答案 2 :(得分:1)

您也可以尝试

mv $(date +%Y-%m-%d_%H:%M:%S_)m_group_types.csv m_group_types.csv

mv $(date +%Y-%m-%d_%H:%M:%S_ -d "DATE_HERE_IF_NOT_TODAY")m_group_types.csv m_group_types.csv

答案 3 :(得分:0)

使用外壳替换,您可以执行以下操作:

application/soap+xml

如果您有很多这种格式的文件,则可以考虑使用ZSH并使用$ filename="2018-07-20_15:30:27_m_group_types.csv" $ mv "$filename" "${filename#*_*_}" 命令:

zmv

删除$ zmv -n '[^_]##_[^_]##_(*csv)' '$1' 即可完成操作((-n是试运行)