2014-02-14 28 views
3

我想在R做相當於ls。 假設我想要ls /a/b/c/201*/*/d/e/f/*/sameNameFile.gz,這個命令需要5秒鐘才能在終端上運行,我試圖使用list.files,但它需要path參數,並且需要recursive=TRUE。它走的年齡......高效list.files

是否有一個功能,我可以使用(或選項list.files),讓我來運行這個命令ls(我知道我可以system(cmd,intern=TRUE)運行comamnd本身,而是我想A R溶液)

+0

這幾乎是http://stackoverflow.com/q/21576944/134830 –

+1

的副本如果這是一個必須定期運行的命令,則可能需要考慮將所需文件複製到通用文件夾,或以其他方式重組您的文件系統。 –

回答

4

從相關的問題

Fast test if directory is empty

其結果是,在某些系統上,system("ls -f -R", intern = TRUE)list.files更快。你的表現可能有所不同

-R開關意味着遞歸; -f開關裝置不按字母順序排序,這是性能增益的來源。

+0

在我的情況下的性能就像1到100 ...此外,我沒有在這裏使用「-R」,我只是用整個路徑指定一個「regex」......我不應該在列表中使用遞歸。文件' – statquant

+1

@statquant然後不使用它。這個答案的要點在於'list.files'很慢,而像'system(sprintf('ls%s',ls_args),intern = TRUE)'這樣的東西只是普通的更快。 – shadowtalker