如何使用R语言批量设置多个文件的创建日期属性
R 批量修改文件创建时间实操方案
你已完成日期与文件名对应表构建的前提下,可按以下步骤操作,数百个文件也可以批量完成:
步骤1:安装依赖包(仅首次运行需要)
install.packages("fs") library(tidyverse) library(lubridate) library(fs)
步骤2:校验文件存在性
先确认所有待处理文件都能被R访问,避免运行时报错:
# 若文件不在当前工作目录,可先补充完整路径,示例: # df$Name <- paste0("D:/your_files_folder/", df$Name) # 检查所有文件是否存在 missing_files <- df$Name[!fs::file_exists(df$Name)] if (length(missing_files) > 0) { stop(paste("缺失文件:", paste(missing_files, collapse = "、"))) }
步骤3:批量修改文件时间
通用跨平台方案(优先使用)
fs包会自动适配不同操作系统,Windows下可直接修改创建时间,macOS/Linux下若创建时间未生效可使用对应系统专属方案:
purrr::pwalk(df, function(Name, Date) { target_time <- as.POSIXct(Date) fs::file_touch( path = Name, modification_time = target_time, access_time = target_time ) })
macOS 专属方案
purrr::pwalk(df, function(Name, Date) { time_format <- format(Date, "%m/%d/%Y 00:00:00") system(paste0("SetFile -d '", time_format, "' ", shQuote(Name))) })
Linux 专属方案
purrr::pwalk(df, function(Name, Date) { time_format <- format(Date, "%Y%m%d%H%M.%S") system(paste0("touch -t ", time_format, " ", shQuote(Name))) })
步骤4:校验修改结果
运行以下代码可查看文件的实际创建时间和修改时间,确认是否符合预期:
fs::file_info(df$Name) %>% dplyr::select(file_path = path, 创建时间 = birth_time, 修改时间 = modification_time)
注意事项
- 操作前建议先备份所有待处理文件,避免误操作丢失数据
- 只读文件、加密文件可能修改失败,遇到报错可单独排查对应文件的权限设置
内容的提问来源于stack exchange,提问作者blrun
相关产品推荐
相关产品推荐

