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


R changedFiles 檢測哪些文件已更改


R語言 changedFiles 位於 utils 包(package)。

說明

fileSnapshot 拍攝所選文件的快照,記錄每個文件的摘要信息。 changedFiles 比較兩個快照,或將一個快照與文件係統的當前狀態進行比較。快照不必是同一目錄;這可用於比較兩個目錄。

用法

fileSnapshot(path = ".", file.info = TRUE, timestamp = NULL, 
	    md5sum = FALSE, digest = NULL, full.names = length(path) > 1,
	    ...) 

changedFiles(before, after, path = before$path, timestamp = before$timestamp, 
	    check.file.info = c("size", "isdir", "mode", "mtime"), 
	    md5sum = before$md5sum, digest = before$digest, 
	    full.names = before$full.names, ...)
	    
## S3 method for class 'fileSnapshot'
print(x, verbose = FALSE, ...)

## S3 method for class 'changedFiles'
print(x, verbose = FALSE, ...) 

參數

path

特征向量;要記錄的路徑。

file.info

邏輯性;是否記錄每個文件的file.info值。

timestamp

字符串或NULL;拍攝快照時要寫入的文件的名稱。這可以快速測試修改情況,但可能不可靠;請參閱詳細信息。

md5sum

邏輯性;是否應將每個文件的 MD5 摘要作為快照的一部分。

digest

函數或NULL;帶有標題 function(filename) 的函數,它將采用文件名向量並生成相同長度的值向量,或具有該行數的矩陣。

full.names

邏輯性;是否應記錄全名(如 list.files )。如果 length(path) > 1 則必須是 TRUE

...

傳遞給 list.files 的其他參數以控製快照中的文件集。

before, after

fileSnapshot 生成的對象;兩個快照進行比較。如果after丟失,將使用before中記錄的參數作為默認值生成當前文件係統的新快照用於比較。

check.file.info

特征向量;應比較 file.info 中的哪些列。

x

要打印的對象。

verbose

邏輯性;打印時是否列出所有數據。

細節

fileSnapshot 函數使用 list.files 獲取文件列表,並根據 file.infomd5sumdigest 參數記錄有關每個文件的信息。

changedFiles 函數比較兩個快照。

如果 fileSnapshottimestamp 參數長度為 1,則會創建具有該名稱的文件。如果 changedFiles 中的長度為 1,則使用 file_test 函數將 beforeafter 共有的所有文件的年齡與其進行比較。該測試可能不可靠:它將after 文件的當前修改時間與時間戳進行比較;這可能與拍攝 after 快照時的修改時間不同。如果保存時間戳的文件係統上的時鍾與保存快照文件的時鍾不同,也可能會給出不正確的結果。

如果 check.file.info 參數包含非空字符向量,則將比較 file.info 調用結果中的指示列。

如果md5sumTRUEfileSnapshot將調用tools::md5sum函數記錄每個文件的32字節MD5校驗和,changedFiles將比較這些值。 digest 參數允許用戶提供自己的摘要函數。

fileSnapshot 返回類 "fileSnapshot" 的對象。這是一個包含字段的列表

info

一個 DataFrame ,其行名是文件名,其列包含請求的快照數據

path

調用中的標準化path

timestamp, file.info, md5sum, digest, full.names

調用中其他參數的記錄

args

其他參數通過 ... 傳遞到 list.files

changedFiles 生成 "changedFiles" 類的對象。這是一個列表,其中包含

added, deleted, changed, unchanged

快照之前和之後的文件名的字符向量,具有明顯的含義

changes

一個邏輯矩陣,其中一行代表每個公共文件,一列代表每個比較測試。 TRUE 表示該測試發生了變化。

print 方法是為每種類型定義的。 "fileSnapshot" 對象的 print 方法顯示用於生成它們的參數。而 "changedFiles" 則顯示 addeddeletedchanged 字段(如果非空),以及包含所有 TRUE 值的 changes 矩陣的子矩陣。

例子

# Create some files in a temporary directory
dir <- tempfile()
dir.create(dir)
writeBin(1L, file.path(dir, "file1"))
writeBin(2L, file.path(dir, "file2"))
dir.create(file.path(dir, "dir"))

# Take a snapshot
snapshot <- fileSnapshot(dir, timestamp = tempfile("timestamp"), md5sum=TRUE)
  
# Change one of the files.
writeBin(3L:4L, file.path(dir, "file2"))

# Display the detected changes.  We may or may not see mtime change...
changedFiles(snapshot)
changedFiles(snapshot)$changes

作者

Duncan Murdoch, using suggestions from Karl Millar and others.

也可以看看

file.infofile_testmd5sum

相關用法


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