我正在尝试使用以下命令从 3 个网络驱动器检索文件list.files
这需要永远。当我使用时find
在 shell 中,它会在不到 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。所以文件不多但非常大。
根据评论,我写了一个小 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)}
)
}
整个事情还没有经过太多测试,但它正在为我的目的工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)