如何在Windows系统的R中批量解压不同文件夹下的.gz文件
解决Windows下R批量解压.gz文件并删除原包的方法
方法一:使用R.utils包(推荐,无需依赖系统环境)
这个包的gunzip函数专门处理.gz格式文件,支持一键解压并删除原压缩包,操作稳定可靠。
# 首次运行需安装包 install.packages("R.utils") # 加载工具包 library(R.utils) # 设置根文件夹路径(替换为你的Folder1实际路径,比如"C:/Data/Folder1") root_dir <- "C:/Your/Path/To/Folder1" # 递归查找所有子文件夹中的.gz文件,获取完整路径 gz_files <- list.files( path = root_dir, pattern = "\\.gz$", # 精准匹配.gz结尾的文件 recursive = TRUE, full.names = TRUE ) # 遍历处理每个.gz文件 for (file in gz_files) { # 解压到原文件夹,自动去掉.gz后缀,解压后删除原压缩包 gunzip( filename = file, destname = sub("\\.gz$", "", file), overwrite = TRUE, # 允许覆盖已存在的同名解压文件,可根据需求改为FALSE remove = TRUE ) # 可选:打印处理进度 cat("已完成:", file, "\n") }
方法二:调用Windows系统命令(需额外配置)
如果你的Windows环境已安装gzip工具(比如Git Bash、7-Zip并添加到系统环境变量),可以直接调用系统命令:
root_dir <- "C:/Your/Path/To/Folder1" gz_files <- list.files(root_dir, pattern = "\\.gz$", recursive = TRUE, full.names = TRUE) for (file in gz_files) { # -d参数表示解压,执行后自动删除原.gz文件 system(paste0('gzip -d "', file, '"')) cat("已完成:", file, "\n") }
关键说明
list.files(recursive=TRUE)会遍历根目录下所有子文件夹,确保不会遗漏任何.gz文件- 两种方法都会将解压后的文件保留在原.gz文件所在的子文件夹中,完全符合需求
内容的提问来源于stack exchange,提问作者Alexia k Boston
相关产品推荐
相关产品推荐

