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

如何使用R批量偏移生物声学wav序列文件名的时间戳

R语言批量重命名实现方案

核心思路是先从文件名提取设备自带的错误时间戳,按录制顺序排序后,以你记录的真实起始时间为基准,按固定录制间隔逐个计算每个文件的真实时间戳,生成新文件名后批量完成重命名,全程不需要手动计算时间偏移量。

操作步骤

  • 先将所有待处理的wav文件集中到单独的文件夹,务必备份全量原始文件,避免重命名操作失误造成数据损失。
  • 安装基础R环境即可运行,不需要额外依赖第三方包。
  • 修改代码开头的配置参数,填入你本地的文件路径、设备名、真实起始时间,直接运行即可完成批量处理。
# -------------------------- 请修改以下参数 --------------------------
# 存放待重命名wav文件的文件夹路径,Windows路径注意把反斜杠改成正斜杠或者双反斜杠
file_dir <- "C:/your/path/to/wav/folder"
# 设备名,和文件名前缀保持一致
device_name <- "swift1"
# 真实录制起始时间,格式为"YYYY-MM-DD HH:MM:SS",按野外记录的实际值填写
real_start_time <- as.POSIXct("2022-06-17 09:30:00", tz = "UTC")
# 单个文件的录制时长,单位为分钟
file_duration_min <- 20
# -------------------------------------------------------------------

# 读取目录下所有匹配命名规则的wav文件
all_files <- list.files(
  path = file_dir,
  pattern = paste0("^", device_name, "_.*\\.wav$"),
  full.names = FALSE
)

# 基础校验:未找到匹配文件时终止运行并提示
if (length(all_files) == 0) {
  stop("对应路径下未找到匹配命名格式的wav文件,请检查路径和设备名配置")
}

# 从文件名解析设备记录的错误时间戳
wrong_timestamps <- as.POSIXct(
  gsub(
    pattern = paste0("^", device_name, "_(\\d{8})_(\\d{6})\\.wav$"),
    replacement = "\\1\\2",
    x = all_files
  ),
  format = "%Y%m%d%H%M%S",
  tz = "UTC"
)

# 按错误时间戳从小到大排序,严格匹配录制生成顺序
file_order <- order(wrong_timestamps)
sorted_files <- all_files[file_order]

# 逐个计算对应真实时间:第一个文件对齐真实起始时间,后续每个文件累加固定录制时长
real_timestamps <- real_start_time + (seq_along(sorted_files) - 1) * file_duration_min * 60

# 生成符合原命名规则的新文件名
new_filenames <- paste0(
  device_name,
  "_",
  format(real_timestamps, "%Y%m%d"),
  "_",
  format(real_timestamps, "%H%M%S"),
  ".wav"
)

# 执行批量重命名
rename_result <- file.rename(
  from = file.path(file_dir, sorted_files),
  to = file.path(file_dir, new_filenames)
)

# 输出处理结果统计
cat(sprintf("重命名完成:共成功处理%d个文件,失败%d个\n",
            sum(rename_result),
            sum(!rename_result)))

# 存在失败文件时打印对应文件名,方便排查
if (sum(!rename_result) > 0) {
  cat("重命名失败的文件如下:\n")
  cat(sorted_files[!rename_result], sep = "\n")
}

关键说明

  • 代码通过正则表达式从文件名解析时间戳,不依赖文件系统的创建时间、修改时间,不会因为文件拷贝、移动导致顺序错乱。
  • 排序逻辑严格按照设备生成的原始时间戳排列,完全匹配实际录制顺序,即使中途存在漏录文件,也不会导致后续文件的时间偏移。
  • 时间计算统一指定时区,避免夏令时、系统时区切换导致的时间偏移错误,国内使用可将代码中tz参数改为"Asia/Shanghai"。
  • 采用向量化的重命名操作,处理2000余个文件仅需数秒即可完成,运行结束后会输出明确的成功/失败统计,方便校验结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:16:01