#r #directory #batch-processing #copy-paste
#r #каталог #пакетная обработка #копирование-вставка
Вопрос:
Я пытаюсь скопировать файлы в различные папки с совпадающими именами файлов.
Вот выдержка имен файлов:
20201026_ABCD.txt
20201026_XYZ.txt
20201027_ABCD.txt
20201027_POR.txt
20201028_ABCD.txt
20201028_PQR.txt
Я хочу создать папки, содержащие только компоненты даты из файлов выше. Мне удалось зайти так далеко, основываясь на приведенном ниже коде:
setwd("C:/Projects/TEST")
library(stringr)
filenames<-list.files(path = "C:/Projects/TEST", pattern = NULL)
#create a variable that contains all the desired filenames
foldernames.unique<-unique(str_extract(filenames,"[0-9]{1,8}"))
#create folders based on this variable
foldernames.unique<-paste("dates/",foldernames.unique,sep='')
lapply(foldernames.unique,dir.create,recursive = TRUE)
Теперь, как мне скопировать 20201026_ABCD.txt and 20201026_XYZ.txt
в папку 20201026
, и так далее, и тому подобное?
Ответ №1:
Теперь вам просто нужно использовать file.rename
для перемещения файлов. Сначала я немного изменю положение, чтобы сохранить неуникальные имена папок, чтобы мне не приходилось их повторно объединять. Как насчет этого
srcfolder <- "C:/Projects/TEST"
filenames <- list.files(path = srcfolder, pattern = NULL)
#create a variable that contains the desired foldername for each file
foldernames <- file.path("dates", str_extract(filenames,"[0-9]{1,8}"))
foldernames.unique <- unique(foldernames)
#create folders based on unique values of variable
lapply(foldernames.unique, dir.create, recursive = TRUE)
# Now move files
file.rename(file.path(srcfolder, filenames), file.path(foldernames, filenames))
Мы просто создаем имена файлов file.path
, которые немного более надежны, чем paste()
Комментарии:
1. Потрясающе, это сработало как шарм. Не могли бы вы объяснить логику file.rename? Мне это никогда не приходило в голову! Еще раз спасибо.
2. Это всего лишь два параметра: старое имя, новое имя. Пока вы объединяете пути, вы можете переместить файл в любую существующую папку, которая вам нравится. Переименование файла — это, по сути, то же самое, что и его перемещение.