如何解压缩保存在不同文件夹中的各种 .gz 文件?

问题描述 投票:0回答:2

我有各种 .gz 文件保存在不同的文件夹中。下面提到了文件顺序的示例。我想 ungz 它们并希望它们与以前位于同一文件夹中(例如,文件夹 1a 的 .gz 文件在 ungz-ing 后应保留在文件夹 1a 中)并稍后删除 .gz 文件。

Folder1
 Folder 1a > many .gz files
 Folder 2a > many .gz files
 Folder 3a > many .gz files
 .
 .
 .

我知道如何解压缩 .zip 文件,但这似乎不适用于 .gz 文件。我想在 R 中做,任何人都可以帮忙。我在 Windows 中工作。

r gzip tar.gz
2个回答
0
投票

如果你在 Linux 中,你可以在顶层文件夹中使用 find 命令找到所有的 .gz 文件,并将所有结果重定向到 gzip 命令(使用 -d 选项表示你想要解压)作为如下:

find . -name "*.gz" -exec gzip -d {} \;

在 Windows 中尝试:

gzip -r -d Folder1

要在 R 中执行此操作,请使用 system 函数执行上述两个命令之一。


0
投票

先写一个解压单个文件的函数。

gzfile()
函数 可用于打开解压缩 gzip 文件的连接。

decompress <- function(file, dest = sub("\\.gz$", "", file)) {
  # Set up source and destination connections
  src <- gzfile(file, "rb")
  on.exit(close(src), add = TRUE)
  dst <- file(dest, "wb")
  on.exit(close(dst), add = TRUE)
  
  # Copy decompressed contents from source to destination
  BATCH_SIZE <- 10 * 1024^2
  repeat {
    bytes <- readBin(src, raw(), BATCH_SIZE)
    if (length(bytes) != 0) {
      writeBin(bytes, dst)
    } else {
      break
    }
  }
  
  invisible(dest)
}

然后,将其应用于要解压的文件:

files <- list.files(pattern = "*.gz", full.names = TRUE, recursive = TRUE)
for (file in files) {
  decompress(file)
}
© www.soinside.com 2019 - 2024. All rights reserved.