在工作目录中,我的文件夹名称以“ * _txt”结尾,其中包含文件夹内的文件,我希望将所有具有原始名称的文件夹和其中的文件压缩为zip。一切工作正常,但是.zip中的问题也包含目录名,我也不想,例如“ 1202_txt.zip \ 1202_txt \ files”必须为“ 1202_txt.zip \ files”
dir.create("1202_txt") # creating folder inside working directory
array <- list.files( , "*_txt")
for (i in 1:length(array)){
name <- paste0(array[i],".zip")
#zip(name, files = paste0(d,paste0("/",array[i])))
zip(name, files = array[i])
}
以上代码可用Creating zip file from folders in R 注意:可以跳过空文件夹
答案 0 :(得分:1)
可以请您试试吗? (使用R 3.5.0和macOS High Sierra 10.13.6)
dir_array <- list.files(getwd(), "*_txt")
zip_files <- function(dir_name){
zip_name <- paste0(dir_name, ".zip")
zip(zipfile = zip_name, files = dir_name)
}
Map(zip_files, dir_array)
这应该使用指定名称将当前工作目录中的所有文件夹压缩。压缩文件夹也位于当前工作目录中。
答案 1 :(得分:1)
这是我用来达到预期效果的一种技巧,但仍然有效
setwd("c:/test")
dir.create("1202_txt") # creating folder inside working directory and some CSV files in there
array <- list.files( , "*_txt")
for (i in 1:length(array)){
name <- paste0(array[i],".zip")
Zip_Files <- list.files(path = paste0(getwd(),"/", array[[i]]), pattern = ".csv$")
# Moving Working Directory
setwd(file.path("C:\\test\\",array[[i]]))
#zipping files inside the directory
zip::zip(zipfile = paste0(name[[i]]), files = Zip_Files)
# Moving zip File from Inside folder to outside
file.rename(name[i], paste0("C:\\test\\", name[i]))
print(name[i])
}