首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash -文件名更改日期+1

问Bash -文件名更改日期+1
EN

Stack Overflow用户
提问于 2016-04-10 02:59:05
回答 1查看 125关注 0票数 0

我有大约500个文件,我需要用报告所代表的日期重命名。文件名当前为:

代码语言:javascript
复制
WUSR1453722998383.csv
WUSR1453723010659.csv
WUSR1453723023497.csv

诸若此类。文件名中的数字与日期无关,因此我不能使用文件名作为文件重命名的指南。这些报告从2014年12月2日开始,截至昨天(2016年04日09/04),每个月都有一份报告。幸运的是,文件名也是顺序的-所以04/12/2014将有一个高于03/12/2014,这将有一个比02/12/2014更多的数字。这意味着文件按字母顺序自动列出。

然而,在CSV的第一行中,在数据之前有一个日期:

代码语言:javascript
复制
As at Date,2014-12-02

现在,我已经检查了所有的文件,并且我已经有了,那么重命名到日期的最好方法是什么呢?我可以将起始日期设置为02/12/2014,并将每个文件重命名为+1日期,或者脚本可以读取文件第一行上的日期(例如As at Date,2014-12-02)并使用该日期重命名文件。

我不知道如何用bash编写上述任何一种方法,所以如果您能帮助解决这一问题,我们将非常感激。

在文件输出方面,我希望:

02-12-2014.csv 03-12-2014

诸若此类

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-10 03:44:16

这就是你需要的答案吗?假设所有文件都在当前目录下。在你做真正的手术之前先做些测试。条件是cvs文件中的每个日期字符串都是唯一的。否则会有一些文件被覆盖。

代码语言:javascript
复制
#!/bin/bash
for f in *.csv
do 
    o=$(sed '1q' $f |awk -F"[,-]" '{print $NF"-"$(NF-1)"-"$(NF-2)".csv"}')
    # should we backup the file?
    # cp $f ${f}.bak
    mv $f $o
done
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36525237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档