Unix根据文件名中的日期删除旧文件

时间:2016-01-19 20:53:46

标签: unix

我在以下目录中有文件名:

ACCT_GA12345_2015-01-10.xml
ACCT_GA12345_2015-01-09.xml
ACCT_GDC789g_2015-01-09.xml
ACCT_GDC567g_2015-01-09.xml
ACCT_GDC567g_2015-01-08.xml
ACCT_GCC7894_2015-01-01.xml
ACCT_GCC7894_2015-01-02.xml
ACCT_GAC7884_2015-02-01.xml
ACCT_GAC7884_2015-01-01.xml

我想只在文件夹中包含最新文件。只使用文件名(不是日期戳)可以找到最新的文件。例如,ACCT 12345具有1/10和10的文件。 1/09。我需要删除1/09文件并且只有1/10文件,对于ACCT 789g只有一个文件所以我必须有该文件,ACCT 567g最新文件是1/09所以我必须删除1/08并有1/09。所以最新文件的组合应该是ACCT&该ACCT的最长日期。

我需要最终的文件列表:

ACCT_GA12345_2015-01-10.xml
ACCT_GDC789g_2015-01-09.xml
ACCT_GDC567g_2015-01-09.xml
ACCT_GCC7894_2015-01-02.xml
ACCT_GAC7884_2015-02-01.xml

有人可以在unix中帮助我使用此命令吗?任何帮助表示赞赏

1 个答案:

答案 0 :(得分:0)

我做这样的事情....用ls命令测试开始,当你得到想要删除的内容时,然后做rm。

ls ACCT_{GDC,GA1}*-{09,10}.xml

这将列出以09或10结尾的任何GDC或GA1文件。您可以使用组合和不同的值进行播放,直到您拥有表明要删除的正确文件集。一旦你将ls改为rm,你应该是金色的。

有了更多信息,我可以帮助你。为了测试这一点,我做了:

touch ACCT_{GDC,GA1}_{01..10}_{05..10}.xml

这将使56个不同的虚拟文件具有不同的组合。创建一个目录,运行此命令,然后弄清楚。这是学习linux cli的最佳方法。你需要65%的命令,你将学习,理解,使用然后再也不用了...所以学习如何教自己如何使用手册页并设置一个位置来玩。