我需要帮助将成千上万的.wav文件名(如"2018-10-26 17/11/00"(更改为"2018-10-19 17:11:00",但也要从该文件的小时数中减去5小时,因此最终名称应为"2018-10-26 12:11:00"我使用Rstudio就是为了做到这一点。我在这些文件之前有一些十六进制数字,代码是:
#Convert filenames to date and time of creation
library(tidyverse)
#Set directory to folder containing files
setwd("/Volumes/Informacion/Paisaje Jave/Grabadora 4, (cancha de football)")
#Change this to wherever your files are located
Audiomoth_Dir <- "/Volumes/Informacion/Paisaje Jave/Grabadora 4, (cancha de football)"
#Generate list of files present within the folder
file_list <-list.files(Audiomoth_Dir, pattern = "*.WAV", full.names = FALSE)
#Generate vector of creation dates and times
wav_file_info <- file.info(file_list)
new_names <- as.character(wav_file_info$mtime)
#Rename files
file.rename(from = file_list, to = str_c(new_names,".wav"))
file.rename()
谢谢!
在R2evans告诉我之后,我制作了这个新代码:
file_list <-list.files(Testfolder, pattern = "*.WAV", full.names = FALSE)
gsub(".wav", "", Testfolder)
as.POSIXct(gsub(".wav", "", Testfolder), format="%Y-%m-%d %H/%M/%S") - 3600*5
format(as.POSIXct(gsub(".wav", "", Testfolder), format="%Y-%m-%d %H/%M/%S") - 3600*5,"%Y-%m-%d %H:%M:%S.wav")
newTestfolder <- format(as.POSIXct(gsub(".wav", "", Testfolder), format="%Y-%m-%d %H/%M/%S") - 3600*5,"%Y-%m-%d %H:%M:%S.wav")
file.rename(from = Testfolder, to=newTestfolder)
虽然我认为有一种选择是在适用的情况下使用时区,但手动做到这一点也不难:
根据您的描述,一些假文件名:
filenames <- c("2018-10-26 17/11/00.wav", "2018-10-26 03/22/00.wav")
第一步是删除名称的非时间戳部分,在这种情况下,它应该只是文件扩展名:
gsub(".wav", "", filenames)
# [1] "2018-10-26 17/11/00" "2018-10-26 03/22/00"
现在,如果我们将它们转换为POSIXt
对象,并减去神奇的"5小时":
as.POSIXct(gsub(".wav", "", filenames), format="%Y-%m-%d %H/%M/%S") - 3600*5
# [1] "2018-10-26 12:11:00 PDT" "2018-10-25 22:22:00 PDT"
我们现在可以使用format
重新引入您想要的文件名:
newfilenames <- format(as.POSIXct(gsub(".wav", "", filenames), format="%Y-%m-%d %H/%M/%S") - 3600*5,
"%Y-%m-%d %H:%M:%S.wav")
newfilenames
# [1] "2018-10-26 12:11:00.wav" "2018-10-25 22:22:00.wav"
然后您可以简单地将它们重命名为file.rename(filenames, newfilenames)
。