在Linux中如何删除指定日期之前的一些文件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Linux中如何删除指定日期之前的一些文件?相关的知识,希望对你有一定的参考价值。
参考技术A假如在一个目录中保留最近30天的文件,30天前的文件自动删除;
#find /tmp -mtime +30 -type f -name *.sh[ab] -exec rm -f ;/tmp _设置查找的目录;
1、mtime +30 _设置时间为30天前;
2、type f _设置查找的类型为文件;
3、name *.sh[ab] _设置文件名称中包含sha或者shb;
4、exec rm -f _查找完毕后执行删除操作;
提示:将此命令写入crontab后即可自动完成查找并删除的工作。
另外的方法大同小异:#find /tmp -mtime +30 -type f | xargs rm -rf。
如何从某个日期之前的 .tar 存档中删除文件
【中文标题】如何从某个日期之前的 .tar 存档中删除文件【英文标题】:How to delete files from a .tar archive older than a certain date 【发布时间】:2021-08-24 21:06:44 【问题描述】:我有一个每天都会用新文件更新的 .tar 文件。但是,超过 60 天的文件将失去价值,不再需要存档。如何从 .tar 存档中删除超过 60 天的文件?
我知道有一个 --delete
选项,但我不确定如何在存档中搜索符合该条件的文件。
【问题讨论】:
老实说,在 Python 中使用标准库tarfile
module 编写它可能会更容易。
顺便说一句,这里要注意的重要一点是 tar 不是为随机访问而设计的存储格式(例如,zip 是)。它是为磁带驱动器设计的,所以一切都是流式传输的;没有可以为快速随机访问而更新的索引,如果您的 tar 文件被压缩,tar --delete
甚至不假装支持就地编辑。
【参考方案1】:
最好使用构建在您需要的设施中的语言。例如,Python 有一个 tarfile
模块,下面展示了如何将 Python 脚本嵌入到用 bash 编写的更大脚本中:
#!/usr/bin/env bash
tarfilter_script=$(cat <<'EOF'
import sys
import tarfile
from datetime import datetime, timedelta
delete_older_than = (datetime.now() - timedelta(days=60)).timestamp()
with tarfile.open(fileobj=sys.stdin.buffer) as tar_in, \
tarfile.open(fileobj=sys.stdout.buffer, mode="w") as tar_out:
for tarinfo in tar_in:
if tarinfo.mtime >= delete_older_than:
tar_out.addfile(tarinfo)
else:
sys.stderr.write(f"Skipping file: tarinfo\n")
EOF
)
python3 -c "$tarfilter_script" <in.tar >out.tar
【讨论】:
以上是关于在Linux中如何删除指定日期之前的一些文件?的主要内容,如果未能解决你的问题,请参考以下文章