shell 脚本仅保留最新的两个 tar 文件,但删除所有其他 tar 文件



可能的重复项:
删除 bash 中除最新 X 文件之外的所有文件

场景如下:

每天会在一个目录中创建两个tar文件,但我只需要最新的两个文件,那么如何每天自动删除其他文件呢?

我是否可以使用纯 shell 命令编写此脚本,而不是使用 perl、python 或 ruby 等高级语言......

这个问题有点类似于FTP - 只想保留最新的 10 个文件 - 删除 LRU 以及如何删除文件夹中除最新三个文件之外的所有文件

但我还需要测试tar文件是否损坏

如果较新的tar文件损坏,我不会保留它,而是保留较旧的文件,那么脚本应该是什么样的?

显然,这可以使用两次传递方法来解决。

  1. 检测并删除损坏的 tar 文件。
  2. 删除除最新 N 个文件之外的所有文件,如参考问题中所述。

第一遍可以用一些东西来执行

for t in *.tar; do
    if program_that_checks_tar_file_for_integrity $t; then
        : # OK
    else
        rm $t
    fi
done

最新更新