You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何按日期范围(筛选2天以上文件)压缩文件?

为zip命令添加日期筛选条件的解决方案

要实现仅压缩创建/修改时间超过2天的图片文件,你需要结合find命令筛选符合条件的文件,再传递给zip进行压缩。zip本身的递归参数-r无法直接实现时间筛选,因此find是更合适的工具。

核心思路

用find定位满足时间条件的图片文件,再通过管道或文件列表传递给zip,同时处理特殊文件名(如含空格)的场景。

具体实现方案

方案1:基础版(处理普通文件名)

适用于文件名不含空格、特殊字符的场景:

find /from_path/media -type f -mtime +2 \( -name "*.jpg" -o -name "*.png" -o -name "*.gif" \) | zip /destination_path/media_backup.zip @

参数说明:

  • -type f:仅筛选文件(排除目录)
  • -mtime +2:匹配修改时间超过2天的文件;若需匹配创建时间,可替换为-btime +2(仅部分文件系统如ext4支持)
  • \( -name "*.jpg" -o -name "*.png" -o -name "*.gif" \):匹配常见图片格式,括号用于确保多个-name条件的逻辑优先级
  • zip ... @:让zip从标准输入读取待压缩的文件列表

方案2:增强版(处理含空格/特殊字符的文件名)

如果你的图片文件名包含空格、换行或特殊字符,需用print0和zip的-0参数避免错误:

find /from_path/media -type f -mtime +2 \( -name "*.jpg" -o -name "*.png" -o -name "*.gif" -o -name "*.webp" \) -print0 | zip -0 /destination_path/media_backup.zip --from-stdin

参数说明:

  • -print0:让find用空字符分隔文件名,避免空格导致的分割错误
  • -0和--from-stdin:告诉zip读取用空字符分隔的文件列表

方案3:保留相对目录结构

如果希望压缩后保留/from_path/media下的相对目录结构(而非绝对路径),可先切换到父目录再执行命令:

cd /from_path && find media -type f -mtime +2 \( -name "*.jpg" -o -name "*.png" \) -print0 | zip -0 /destination_path/media_backup.zip --from-stdin

这样压缩包内的文件路径会是media/subdir/xxx.jpg,而非完整的/from_path/media/subdir/xxx.jpg。

注意事项

  • 若需匹配更多图片格式,可在-name中添加,例如-name "*.webp"、-name "*.bmp"
  • -mtime +2的逻辑是“修改时间距离现在超过48小时”,无需精确到分秒,符合你的需求
  • 如果系统不支持-btime(创建时间),可尝试用-ctime +2,但-ctime表示文件状态(权限、所有者等)的修改时间,不是严格意义上的创建时间

内容的提问来源于stack exchange,提问作者Rohan2429

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 21:57:32