我正在尝试使用list.files
从3个网络驱动器中检索文件,这需要永远。当我在shell中使用find
时,它会在不到15秒的时间内返回所有结果。
system.time(
jnk <- list.files(c("/Volumes/massspec", "/Volumes/massspec2", "/Volumes/massspec3"),
pattern='_MA_.*_HeLa_',
recursive=TRUE))
# user system elapsed
# 1.567 6.381 309.500
这是等效的shell命令。
time find /Volumes/masssp* -name *_MA_*_HeLa_*
# real 0m13.776s
# user 0m0.361s
# sys 0m0.620s
我需要一个适用于Windows和Unix系统的解决方案。有谁有个好主意?网络驱动器总共有大约120,000个文件,但大约16TB。所以文件不多,但文件非常庞大。
答案 0 :(得分:0)
根据评论,我写了一个小R函数,它应该适用于Windows和Unix ......
quickFileSearch <- function(path, pattern) {
switch (.Platform$OS.type,
unix={
paths <- paste(path, collapse=' ')
command <- paste('find', paths, '-name', pattern)
system(command, intern=TRUE)
},
windows={
paths <- paste(file.path(path, pattern,
fsep='\\'),
collapse=' ')
command <- paste('dir', paths, '/b /s /a-d')
shell(command, intern=TRUE)}
)
}
整个事情还没有经过多少考验,但它的目的是为了我的目的。