我有大约500个文件,我需要用报告所代表的日期重命名。文件名当前为:
WUSR1453722998383.csv
WUSR1453723010659.csv
WUSR1453723023497.csv诸若此类。文件名中的数字与日期无关,因此我不能使用文件名作为文件重命名的指南。这些报告从2014年12月2日开始,截至昨天(2016年04日09/04),每个月都有一份报告。幸运的是,文件名也是顺序的-所以04/12/2014将有一个高于03/12/2014,这将有一个比02/12/2014更多的数字。这意味着文件按字母顺序自动列出。
然而,在CSV的第一行中,在数据之前有一个日期:
As at Date,2014-12-02现在,我已经检查了所有的文件,并且我已经有了,那么重命名到日期的最好方法是什么呢?我可以将起始日期设置为02/12/2014,并将每个文件重命名为+1日期,或者脚本可以读取文件第一行上的日期(例如As at Date,2014-12-02)并使用该日期重命名文件。
我不知道如何用bash编写上述任何一种方法,所以如果您能帮助解决这一问题,我们将非常感激。
在文件输出方面,我希望:
02-12-2014.csv 03-12-2014
诸若此类
发布于 2016-04-10 03:44:16
这就是你需要的答案吗?假设所有文件都在当前目录下。在你做真正的手术之前先做些测试。条件是cvs文件中的每个日期字符串都是唯一的。否则会有一些文件被覆盖。
#!/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
donehttps://stackoverflow.com/questions/36525237
复制相似问题