Я пытаюсь переименовать файлы WAV для правильного формата даты - PullRequest
0 голосов
/ 06 ноября 2018

Мне нужна помощь, чтобы поменять тысячи литературных имен файлов .wav, таких как «2018-10-26 17/11/00» на «2018-10-26 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()

Спасибо! * * 1004

После того, что 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)

1 Ответ

0 голосов
/ 06 ноября 2018

Хотя я думаю, что одним из вариантов является использование часовых поясов, если это применимо, это также не сложно сделать вручную:

Некоторые поддельные имена файлов, согласно вашему описанию:

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).

...