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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。