у меня есть тысячи файлов из определенного каталога:Использование R, Получить файлы, имена файлов, которые содержат определенные строки
filenames <- list.files("D:/MessData_Source", pattern="*.DAT", full.names=TRUE)
.....
.....
[9998] "D:/MessData_Source/908-A0F7__01310012567794F.DAT"
[9999] "D:/MessData_Source/908-A0F7__01310015662858F.DAT"
[10000] "D:/MessData_Source/908-A0F7__01310015662859F.DAT"
....
....
Из этих более 1000 файлов, мне нужно извлечь только те файлы, с именами файлов, которые содержат определенные строки.
например.
filename_extracted <- list()
for (i in 1:length(filenames))
{
# search for those filenames that contain the strings with PartNo and MoNo and store in results
filename_extracted[[i]] <- substr(filenames[i],31,43)
}
Выше я извлечение строки имен файлов из числа 31, 43 и сохранить его в filename_extracted что-то вроде этого:
[[9993]]
[1] "1856955908850"
[[9994]]
[1] "1856955933372"
[[9995]]
[1] "1856955933372"
[[9996]]
[1] "1856955954613"
[[9997]]
[1] "1856955954613"
[[9998]]
[1] "1310012567794"
[[9999]]
[1] "1310015662858"
[[10000]]
[1] "1310015662859"
Далее необходимо сравнить filename_extracted моего требуемого список , и скопируйте соответствующие файлы в другой каталог.
required_list <- list()
df <-read.csv("PartNo_MoNo.csv") # full set
for (i in 1:length(df))
{
required_list[[i]] <- paste(df[i,1],df[i,2], sep="")
}
> required_list
[[1]]
[1] "1235235987252"
[[2]]
[1] "1897865985468"
Если имеется совпадение между required_list и filename_extracted, я хочу, чтобы скопировать соответствующие файлы в другой каталог, как мне это сделать?
спасибо.
Привет полковник Beauvel & Dieter Menne, спасибо за оба ваши ответы, я понимаю ваш код ... но мне нужно внести некоторые изменения ..., так как первые 10 символов, не всегда «908-A0F7__». Это может быть «908-A0F7__01310015662859F.DAT» или «908-A062__01042105733247P.DAT» или «908-A050_A01042045683782P.DAT» или «108-0626_B09120015857047A.DAT» или «258-5141_B01963555909713F.DAT» или «108-0626_B09120015774259A.DAT», , Мы видим, что имя файла всегда содержит 29 символов, включая расширение .DAT. –
Отредактировано для этого эффекта! В следующий раз упомянем об этом в вашем вопросе;) –
извините ... Мне все равно нужно также извлечь последние 5 символов ... и добавить в commonFile ... suffix = substr (имена файлов, start = 44, stop = 48) # последние 5 символов .... commonFile = paste0 (common_prefix, common_suffix, suffix) sapply (commonFile, function (u) { file.copy (file.path (storeDir, u), file.path (otherDir, u)) над кодами не работает, он копирует все. –