【发布时间】:2016-04-10 11:52:56
【问题描述】:
我有大约 500 个文件需要用报告所代表的日期重命名。文件名目前是:
WUSR1453722998383.csv
WUSR1453723010659.csv
WUSR1453723023497.csv
等等。文件名中的数字与日期无关,因此我不能将文件名用作文件应重命名为的指南。报告从 2014 年 2 月 12 日开始,直到昨天(2016 年 9 月 4 日),每个月的每一天都有一个报告。幸运的是,文件名是连续的 - 所以 04/12/2014 的数字将高于 03/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.csv
等等
【问题讨论】:
-
欢迎来到 Stack Overflow。请尽快阅读About 页面。您还希望文件按日期顺序列出吗?所以使用像
WUSR-2014-02-12.csv(或者WUSR-20140212.csv)这样的名字会给你名字中的日期吗?您应该将所需的输出(最终文件名)添加到您的问题中(您可以编辑您的问题)。您需要保留原始号码吗?您如何检查是否拥有所有文件?无论您做什么,都应该让您了解如何在 shell 脚本中获取所需的信息。你试过什么? -
我使用过:head -q -n 1 *.csv > output.csv 来检查我是否拥有所有文件(我使用了输出 CSV 并将其与 02/12 的每个日期进行匹配/2014 到昨天,它们都在那里)。我假设我也可以使用类似的东西来重命名文件(它需要每个 CSV 的第一行并使用那里的日期来重命名文件),我只是不知道如何将它们完全绑定在一起。 ..
-
我不明白为什么人们喜欢订购的文件,以便 2014 年 2 月 14 日的文件之后是 2015 年 2 月 14 日和 2016 年 2 月 14 日的文件,然后是 2014 年 2 月 15 日、2015 年 2 月 15 日、15 日的文件2016 年 2 月等。然而,这是一个常见问题 - 肯定有一些原因,但我敢肯定这主要是潜意识的。
-
如果您正在处理 Access,它在输入字母数据时表现得更好,而不必指定您要查找的日期:)
-
我强烈建议您坚持使用 Y-m-d 格式的文件名:这将按正确的时间顺序显示