使用R修改WAV文件名中时间戳的时区
批量将UTC命名的WAV文件重命名为本地时间(UTC-5)
完整R批量重命名脚本
基于你已有的时间转换逻辑,扩展为批量处理的完整脚本:
# 安装并加载所需包(首次运行需执行install.packages) if (!require(lubridate)) { install.packages("lubridate") library(lubridate) } # 设置SD卡文件所在的目标文件夹路径 datadir <- "你的文件目录绝对路径" # 获取所有WAV文件(包含子目录) wav_files <- list.files(datadir, pattern="*.WAV$", full.names=TRUE, recursive=TRUE) # 循环处理每个文件 for (file_path in wav_files) { # 提取不带扩展名的原始文件名 filename_no_ext <- tools::file_path_sans_ext(basename(file_path)) # 解析UTC时间 utc_time <- strptime(filename_no_ext, "%Y%m%d_%H%M%S", tz="UTC") # 转换为UTC-5的本地时间 local_time <- utc_time - hours(5) # 生成符合格式的新文件名 new_filename <- paste0(format(local_time, "%Y%m%d_%H%M%S"), ".wav") # 拼接新的完整文件路径 new_file_path <- file.path(dirname(file_path), new_filename) # 执行重命名(添加存在判断避免覆盖) if (!file.exists(new_file_path)) { file.rename(file_path, new_file_path) cat("完成重命名:", basename(file_path), "→", new_filename, "\n") } else { cat("跳过:", new_filename, "已存在,未执行重命名\n") } }
关键细节说明
- 使用
full.names=TRUE确保获取文件完整路径,支持处理子目录中的文件 - 加入文件存在判断逻辑,防止意外覆盖已有文件
- 自动处理日期跨天情况(比如UTC时间00:10转换后为前一天的19:10),无需额外调整
- 保留原文件的目录结构,仅修改文件名的时间部分
操作建议
- 先在测试文件夹中放入少量样本文件,运行脚本验证重命名逻辑正确
- 确认目标文件夹路径无误,避免误处理其他目录的文件
内容的提问来源于stack exchange,提问作者yofob
相关产品推荐
相关产品推荐

