Ruby实现:删除指定目录中早于X天的所有文件
实现仅删除早于X天的CSV文件
要实现这个需求,核心是先计算出X天前的时间节点,再遍历目录筛选出符合条件的文件后删除,具体代码如下:
require 'fileutils' # 定义要保留的天数,比如保留最近7天的文件 x_days = 7 # 计算截止时间:当前时间减去X天的秒数 cutoff_time = Time.now - (x_days * 24 * 60 * 60) # 遍历reports目录下所有CSV文件(仅一级目录) Dir.glob("reports/*.csv").each do |file| # 获取文件的最后修改时间 file_modified_time = File.mtime(file) # 判断是否早于截止时间,是则删除 if file_modified_time < cutoff_time FileUtils.rm_rf(file, secure: true) end end
额外说明
- 如果需要递归删除子目录中的CSV文件,把
Dir.glob的路径改成"reports/**/*.csv" - 若要基于文件创建时间判断(注意:Linux系统下
File.ctime是文件状态变更时间,Windows下才是创建时间),替换File.mtime为File.ctime - 保留
secure: true参数可以避免误删符号链接指向的目录,维持原有的安全校验逻辑
内容的提问来源于stack exchange,提问作者ToddT
相关产品推荐
相关产品推荐

