可能的重复项:
删除 bash 中除最新 X 文件之外的所有文件
场景如下:
每天会在一个目录中创建两个tar文件,但我只需要最新的两个文件,那么如何每天自动删除其他文件呢?
我是否可以使用纯 shell 命令编写此脚本,而不是使用 perl、python 或 ruby 等高级语言......
这个问题有点类似于FTP - 只想保留最新的 10 个文件 - 删除 LRU 以及如何删除文件夹中除最新三个文件之外的所有文件
但我还需要测试tar文件是否损坏
如果较新的tar文件损坏,我不会保留它,而是保留较旧的文件,那么脚本应该是什么样的?
显然,这可以使用两次传递方法来解决。
- 检测并删除损坏的 tar 文件。
- 删除除最新 N 个文件之外的所有文件,如参考问题中所述。
第一遍可以用一些东西来执行
for t in *.tar; do
if program_that_checks_tar_file_for_integrity $t; then
: # OK
else
rm $t
fi
done