我有一个文件夹,其中包含3个月和1年以下的备份文件。他们有相同的部分名称,但其他部分是备份日期(所以我有一组文件)。从我的文件夹中的所有文件中,我只需要保留每个组中的3个zip文件:不是来自所有文件的最后3个修改文件,而是每个组的最后3个文件,因为可以在不同的时间创建备份过去。其他文件,删除。如何处理三个文件组中的文件
例子:
的zip文件列表:
ais_2016-02-21.zip
ais_hg_2016-07-31.zip
ais_hg_2016-08-07.zip
ais_hg_2016-08-14.zip
ais_hg_2016-08-21.zip
ais_hg_2016-08-28.zip
ais_hg_2016-09-04.zip
asf_2016-07-17.zip
asf_2016-07-24.zip
asf_2016-07-31.zip
asf_2016-08-07.zip
asf_2016-08-14.zip
asf_2016-08-21.zip
asf_2016-08-28.zip
asf_2016-09-04.zip
asf-ant-tasks_2015-12-13.zip
asf-ant-tasks_2015-12-27.zip
asf-ant-tasks_2016-01-17.zip
asf-ant-tasks_2016-01-31.zip
asf-ant-tasks_2016-02-14.zip
asf-ant-tasks_hg_2016-02-28.zip
asf-ant-tasks_hg_2016-08-07.zip
asf-ant-tasks_hg_2016-08-14.zip
asf-ant-tasks_hg_2016-08-21.zip
asf-ant-tasks_hg_2016-08-28.zip
组:
ais
ais_hg
asf
asf-ant-tasks
asf-ant-tasks_hg
,我需要从ais
从ais_hg
保持3个最后修改的文件,3,3从asf
等等。但是,有更多的文件组(130),所以我无法手动编写脚本中的每个组。
所以我在这里。我有两个阵列,我不知道从哪里出发。
#!/bin/bash
files=(/media/sf/zipp/outOFtime/*.zip)
cuts=($(find ${files[@]} -type f | sed 's/.{15}$//' | sed 's/^.{1}//' | sort |uniq))
for f in "${cuts[@]}"
do
echo -e $f
done
删除外部图像链接并提供相同的文本表示。 – Inian
在我看来,你应该考虑一个不同的语言,比如Python或Ruby。 –
但这是不可能的不幸:(我必须使用这种语言,因为这是我的任务在我的新作 – sensey