比较备份文件的时间戳并删除最旧的文件

时间:2015-10-10 17:47:27

标签: bash shell sh

我开发了一个备份shell脚本,它基本上将一个文件复制到另一个目录,并在其上附加一个时间戳,粘合在一起构成一个数字。

有这样的效果。

cp file1 directory/{file1##*/} - {date +'%Y%m%d%H%M%S'}

现在,想象一下我有'file1 - 20151009141528'和许多其他file1备份。如何比较它们并删除日期构成最小数字的那个?

老实说,这是我的最后一招。我尝试过并试过但无济于事!

非常感谢提前!

编辑:

我想去找像

这样的东西
for item in "$directory1"
do
 if *number of file1 - 20151009141528 is smaller than all remaining backup files, remove*
done

2 个答案:

答案 0 :(得分:0)

我只是使用类似sort -k3 -r的排序按时间戳对它们进行排序,并使用tail tail -n 1显示最后一个。它对你有帮助吗?

答案 1 :(得分:0)

您可以在备份文件所在的目录中运行此命令:ls|sort -V |head -n 1 |xargs rm。它会对您的文件进行排序,然后选择正确的文件并将其删除。此命令不关心文件是最旧的还是最新的。它根据sort删除最小值。如果要在脚本中运行它。只需导航到您的目录,然后运行该命令。像是这样的事情:

cd /path/to/directory;
ls|sort -V |head -n 1 |xargs rm;
相关问题