shell脚本只保留最新的两个tar文件,但删除所有其他tar文件? [复制]

Posted

技术标签:

【中文标题】shell脚本只保留最新的两个tar文件,但删除所有其他tar文件? [复制]【英文标题】:shell script to only keep the latest two tar files, but delete all other tar files? [duplicate] 【发布时间】:2012-09-24 11:27:04 【问题描述】:

可能重复:Delete all but the most recent X files in bash

场景如下:

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

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

这个问题有点类似于FTP - Only want to keep latest 10 files - delete LRU和how to delete all files except the latest three in a folder

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

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

【问题讨论】:

如何(命令和选项)测试 tar 文件的完整性? 【参考方案1】:

显然,这可以使用两遍方法解决。

    检测并删除损坏的 tar 文件。 如引用问题中所述,删除除最新的 N 个文件之外的所有文件。

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

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

【讨论】:

以上是关于shell脚本只保留最新的两个tar文件,但删除所有其他tar文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

怎样写shell脚本,定期执行删除centos5.6中Apache的log系统日志文件. 只保留最近2个?

怎样写shell脚本,定期执行删除centos5.6中Apache的log系统日志文件. 只保留最近2个?

shell删除文件夹脚本怎么写?,保留2天内的文件夹,2天以前的是直接删除,每周二、四、六删一次

那位高手帮我写一个linux shell脚本,是关于定时删除/**/**/**的数据,只保留180天的数据

使用shell巧妙高效的批量删除历史文件或目录

日志文件删除shell脚本