【问题标题】:Comparing timestamps of backup files and erasing the oldest one比较备份文件的时间戳并擦除最旧的文件
【发布时间】:2015-10-10 17:47:27
【问题描述】:

我开发了一个备份 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

【问题讨论】:

    标签: bash shell sh


    【解决方案1】:

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

    【讨论】:

    • 这不是我的错。说实话,我不知道如何在我的脚本中插入它,因为我从未使用过 tail 或 sort。
    • ls | sort -k3 -r | tail -n 1 | xargs rm 这将删除编号最小的文件。
    【解决方案2】:

    您可以在备份文件所在的目录中运行此命令:ls|sort -V |head -n 1 |xargs rm。它对您的文件进行排序,然后拾取文件并将其删除。此命令不关心文件是最旧的还是最新的。它根据sort 删除最小的。如果你想在你的脚本中运行它。只需导航到您的目录,然后运行命令。有点像:

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

    【讨论】:

      猜你喜欢
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多