【发布时间】:2013-12-21 08:17:58
【问题描述】:
我正在使用 KornShell (ksh) 为目录执行清理脚本。 我将文件名前缀保存在文本文件中。在 ksh 中,我想从文件中读取前缀,并匹配文件的模式并保留并压缩(.Z)目录中匹配文件的最新四个版本。我想删除剩余的版本。我这样做的原因是文件是累积的,我只想保留最新的文件。
我的文本文件有这样的前缀:
- abcd
- xyz
- pqr
我的目录有很多像这样的不同名称的文件
- abcd###.YYYYMMDDXXXXXX.txt
- abcd###.YYYYMMDDXXXXXX.txt
- abcd###.YYYYMMDDXXXXXX.txt(像这样带有不同的时间戳)
- xyz###.YYYYMMDDXXXXXX.dat
- xyz###.YYYYMMDDXXXXXX.dat
- xyz###.YYYYMMDDXXXXXX.dat
- str12.YYYYMMDDXXXXXX.txt
- qwefd.YYYYMMDDXXXXXX.dat
在这个目录中,由于我在文本文件中有前缀abcd,xyz,所以我想压缩带有该前缀的文件的最新4个版本,并删除带有该前缀的剩余版本。我不想触摸文本文件中未提及的文件。 而且我想下次运行脚本,我想同样保留最新的文件版本并删除剩余的版本(因为下次有以前的压缩文件会在那里。)任何时候我只需要 4 个最新的文件版本。我可以删除之前压缩的文件。
为此我需要一个 ksh 脚本,任何帮助都是可观的。
【问题讨论】:
-
你为什么不用
logrotate呢? -
我想要匹配模式,因为上面提到的文件名..文件扩展名对我来说也很重要..'