當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R file.info 提取文件信息


R語言 file.info 位於 base 包(package)。

說明

用於提取有關用戶文件係統上的文件信息的實用函數。

用法

file.info(..., extra_cols = TRUE)

file.mode(...)
file.mtime(...)
file.size(...)

參數

...

包含文件路徑的字符向量。 Tilde-expansion 已完成:參見 path.expand

extra_cols

邏輯:返回所有列,而不僅僅是前六列。

細節

‘file’ 的構成是 OS-dependent,但包含目錄。 (但是,在 Windows 上,目錄名稱不得包含尾部反斜杠或斜杠。)另請參閱幫助中有關不區分大小寫的文件係統的 file.exists 的部分。

文件 ‘mode’ 遵循 POSIX 約定,給出三個八進製數字,分別總結文件所有者、所有者組和任何人的權限。每個數字都是讀 (4)、寫 (2) 和執行/搜索 (1) 權限的邏輯或。

請參閱files 了解如何解釋帶有標記編碼的文件路徑。

在 UNIX 上:

在大多數係統上都遵循符號鏈接,因此給出的是有關鏈接指向的文件的信息,而不是有關鏈接的信息。

在 Windows 上:

文件模式可能僅在 NTFS 文件係統上有用,並且似乎所有三個數字都指文件的所有者。執行/搜索位是為目錄和基於文件擴展名的文件設置的(例如,‘。EXE文件', '.com', '.cmd' 和 '。蝙蝠’文件)。file.access將提供更可靠的讀/寫訪問可用性視圖R過程。

可以使用在當前區域設置中無效的 UTF-8 編碼文件名。

遵循連接點和符號鏈接,因此給出有關鏈接指向的文件/目錄的信息,而不是有關鏈接的信息。

對於 file.info() ,具有行名稱、文件名和列的 DataFrame

size

double:文件大小(以字節為單位)。

isdir

邏輯:文件是目錄嗎?

mode

"octmode" 的整數。文件權限,以八進製打印,例如 644

mtime, ctime, atime

"POSIXct" 的對象:文件修改、“上次狀態更改”和上次訪問時間。

在 UNIX 上:
uid:

整數,文件所有者的用戶 ID。

組號:

整數,文件組的組 ID。

名稱:

字符,uid 解釋為用戶名。

姓名:

字符,gid 解釋為組名稱。

未知的用戶和組名稱將為 NA

僅在 Windows 上:
EXE文件:

指示可執行文件類型的字符。可能的值為 "no""msdos""win16""win32""win64""unknown" 。請注意,文件(例如腳本文件)可以根據模式位來執行,但在這個意義上是不可執行的。

如果 extra_cols 為 false,則僅返回前六列:因為這些都可以從單個 C 係統調用中找到,所以速度會更快。 (但是,正確配置的係統將使用“名稱服務緩存守護進程”來加速名稱查找。)

不存在或不可讀文件的條目將為 NA

uidgidunamegrname 列可能無法在非 POSIX 類 Unix 係統上提供,並且不會在 Windows 上提供。

三個文件時間的含義取決於操作係統和文件係統。在 Windows 本機文件係統上,ctime 是文件創建時間(大多數類 Unix 文件係統上不會記錄該時間)。 “文件訪問”和“上次訪問時間”的含義取決於係統。

文件時間的分辨率取決於操作係統和文件係統的類型。現代文件係統通常以微秒或更高的精度記錄時間:值得注意的例外是 macOS 上的 HFS+(以秒為單位記錄)和較舊的 FAT 係統上的修改時間(以 2 秒的增量記錄)。請注意,"POSIXct" 時間默認以整秒為單位打印:要更改此設置,請參閱 strftime

file.mode()file.mtime()file.size() 是快速便捷的包裝器,僅返回其中一列。

注意

一些(現在較舊的)類似 UNIX 的係統允許創建超過 2Gb 的文件,但不能由stat係統調用。此類文件可能會顯示為不可讀(並且很可能無法被任何人讀取)R的輸入函數)。

例子

ncol(finf <- file.info(dir()))  # at least six
finf # the whole list
## Those that are more than 100 days old :
finf <- file.info(dir(), extra_cols = FALSE)
finf[difftime(Sys.time(), finf[,"mtime"], units = "days") > 100 , 1:4]

file.info("no-such-file-exists")

## E.g., for R-core, in a R-devel version:
if(Sys.info()[["sysname"]] == "Linux") 
    sort(file.mtime(file.path(R.home("bin"),
                             c("",
                               file.path(c("", "exec"), "R")))
         ))

也可以看看

Sys.readlink 了解符號鏈接, filesfile.accesslist.filesDateTimeClasses 了解日期格式。

Sys.chmod 更改權限。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Extract File Information。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。