untar
位于 utils
包(package)。 说明
从 tar 存档中提取文件或列出 tar 存档的内容。
用法
untar(tarfile, files = NULL, list = FALSE, exdir = ".",
compressed = NA, extras = NULL, verbose = FALSE,
restore_times = TRUE,
support_old_tars = Sys.getenv("R_SUPPORT_OLD_TARS", FALSE),
tar = Sys.getenv("TAR"))
参数
tarfile |
tar 文件的路径名:将执行波浪号扩展(请参阅 |
files |
要提取的记录文件路径的字符向量:默认为提取所有文件。 |
list |
如果是 |
exdir |
将文件提取到的目录(相当于 |
compressed |
(不建议使用 auto-detection,仅用于外部 外部命令可能会忽略所选的压缩类型,但会自动检测类型。 |
extras |
|
verbose |
逻辑:如果为 true,则回显用于外部 |
restore_times |
合乎逻辑的。如果 true(默认)恢复文件修改时间。如果为假,则相当于-m旗帜。 tarball 中的时间应该是 UTC,但 tarball 已提交给 CRAN,时间为未来或遥远的过去:此参数允许丢弃此类时间。 请注意,tarball 中的文件时间以 1 秒的分辨率存储,并且只能恢复到文件系统支持的分辨率(在 FAT 系统上为 2 秒)。 |
support_old_tars |
合乎逻辑的。如果为 false(默认值),则假定外部 如果属实,则R代码调用适当的解压缩器并将输出传输到 |
tar |
字符串:要使用的命令的路径或 |
细节
这是一个包装器tar
命令或用于编写的内部实现R。如果使用后者tarfile
是一个连接或者如果参数tar
是"internal"
或者""
(除了在 Windows 上,当tar.exe
首先尝试)。
除非另有说明,支持三种类型的 tar 文件压缩: gzip
、 bzip2
和 xz
。
支持哪些选项取决于所使用的 tar
实现:"internal"
旨在以一种独立于平台的方式为大多数选项提供支持。
- GNU 焦油:
-
现代 GNU
tar
版本支持压缩档案,并且自 1.15 起能够自动检测压缩类型:1.22 版本添加了对xz
压缩的支持。在类似 Unix 系统上,
configure
将设置环境变量TAR,如果找到的话更喜欢 GNU tar。
bsdtar
:-
macOS 10.6 及更高版本(以及 FreeBSD 和其他一些操作系统)具有来自 libarchive 项目的
tar
,它会自动检测所有三种形式的压缩(即使在 macOS 中未记录)。 - 网络BSD:
-
NetBSD 的情况没有记录
tar
可以自动检测压缩:对于 8 之前的版本,标志为xz
压缩是--xz不是-J.所以support_old_tars = TRUE
推荐(或使用bsdtar
如果已安装)。
- 打开BSD:
-
OpenBSD 的
tar
不会自动检测压缩。除了报告文件是xz
压缩之外,它不支持xz
。所以推荐support_old_tars = TRUE
。 - 传家宝工具箱:
-
此
tar
会自动检测gzip
和bzip2
压缩(未记录),但不支持xz
压缩。 - 较旧的支持:
-
环境变量R_GZIPCMD给出解压命令
gzip
文件,以及R_BZIPCMD为了bzip2
文件。 (在类似 Unix 系统上,如果找到的话,它们会在安装时设置。)xz
如果可用则使用:如果不可用,则解压预计会失败。
参数compressed
、extras
和verbose
仅在使用外部tar
时使用。
一些外部tar
命令将检测一些lrzip
,lzma
,lz4
,lzop
和zstd
压缩除了gzip
,bzip2
和xz
。 (对于一些外部tar
命令,只有在适当的实用程序可用时才能读取压缩的 tar 文件。)对于 GNUtar
,进一步的(解)压缩程序可以通过例如指定extras
= "-I lz4"
。为了bsdtar
这可能是extras =
"--use-compress-program lz4"
。大多数命令都会检测(现在很少见)‘.tar.Z' 压缩的档案compress
.
内部实现将符号链接恢复为类 Unix 上的链接,以及 Windows 上的文件副本(仅适用于现有文件,不适用于目录),并将硬链接恢复为链接。如果链接操作失败(在 FAT 文件系统上可能如此),则会尝试文件复制。由于它使用 gzfile
读取文件,因此它可以处理通过函数可以处理的任何方法压缩的文件:至少 compress
、 gzip
、 bzip2
和 xz
压缩,以及某些类型的 lzma
压缩。它不会像某些 tar
实现那样防止恢复绝对文件路径。如有必要,它将为存档中的目录或文件创建父目录。它处理 USTAR/POSIX、GNU 和 pax
处理超过 100 字节的文件路径的方式,以及处理超过 100 字节的链接目标的 GNU 方式。
您可能会看到来自内部实施的警告,例如
unsupported entry type 'x'
这通常表明存档无效:允许条目类型 "A-Z"
作为扩展,但保留其他类型。对于这样的存档,您唯一能做的就是找到处理它的 tar
程序,并仔细查看生成的文件。也可能有警告
using pax extended headers
这表明附加信息可能已被丢弃,例如 ACL、编码......
以前的标准仅支持 ASCII 文件名(实际上,仅支持字母数字加句点、下划线和连字符)。 untar
不会尝试将文件名映射到当前系统上可接受的文件名,并将存档中的文件名视为适用,而无需在当前区域设置中进行任何重新编码。
内部实现不会在 macOS 中special-case“资源分叉”:该系统的tar
命令执行。这可能会导致名称带有前缀“的意外文件”._’。
值
如果是 list = TRUE
,则为 tar 存档中包含的文件的(相对或绝对)路径的字符向量。
否则,从 system
与外部 tar
或 0L
的返回代码是不可见的。
也可以看看
相关用法
- R unzip 提取或列出 Zip 档案
- R upgrade 升级
- R url.show 显示文本 URL
- R update.packages 将已安装的软件包与类似 CRAN 的存储库进行比较
- R select.list 从列表中选择项目
- R COMPILE 编译用于 R 的文件
- R readRegistry 读取 Windows 注册表配置单元
- R browseVignettes 在 HTML 浏览器中列出晕影
- R hasName 检查姓名
- R nsl 按主机名查找 IP 地址
- R edit 调用文本编辑器
- R create.post 准备电子邮件和帖子的辅助函数
- R hsearch-utils 帮助搜索实用程序
- R download.packages 从类似 CRAN 的存储库下载软件包
- R DLL.version MS Windows 上的 DLL 版本信息
- R ls.str 列表对象及其结构
- R Rscript R 前端脚本
- R bug.report 发送错误报告
- R PkgUtils 用于构建和检查附加包的实用程序
- R cite 引用参考书目条目
- R SweaveSyntConv 转换 Sweave 语法
- R RSiteSearch 搜索文档中的关键词或短语
- R glob2rx 将通配符或通配符模式更改为正则表达式
- R getFromNamespace 用于开发命名空间的实用函数
注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Extract or List Tar Archives。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。