如何在 R 中 list.files() 直到 n 层深子目录

LDT*_*LDT 2 r

我有一个非常复杂的文件夹组织,这是它的简化版本。

       |--Folder0 --- Folder0.1
       |
home---|--Folder1 --- Folder1.1 --- Folder1.2
       |
       |--Folder2 --- Folder2.1
Run Code Online (Sandbox Code Playgroud)

我想列出第二级文件夹(Folder0.1、Folder1.1、Folder2.1)中的所有 .xlsx 文件。

非常感谢任何帮助。

请不要想当然地认为文件夹的名称。只是为了简单起见,我这样称呼它们。他们的名字是随机的。

r2e*_*ans 5

list.files(recursive=)不允许立即限制,我建议三种路径:

  1. 获取全部,按文件分隔符(通常为/)拆分并限制列表。

    allfiles <- list.files(".", full.names = TRUE, recursive = TRUE)
    under5 <- allfiles[ lengths(strsplit(allfiles, "/")) < 6 ]
    
    Run Code Online (Sandbox Code Playgroud)

    由于它可能以 开头".",因此您可能需要比您想象的更多的一个。在6这里进行试验以获得您需要的东西。

  2. 如果只有几个深度,则手动构建目录列表并recursive完全禁用。

    dir1 <- list.dirs(".", recursive=FALSE)
    dir2 <- list.dirs(dir1, recursive=FALSE)
    dir3 <- list.dirs(dir2, recursive=FALSE)
    dir4 <- list.dirs(dir3, recursive=FALSE)
    allfiles <- setdiff(list.files(c(dir1, dir2, dir3)), c(dir1, dir2, dir3))
    
    Run Code Online (Sandbox Code Playgroud)

    (诚​​然,尚未经过充分测试,并不出色,但它是一种方法的开始。)

  3. 使用system("find . -maxdepth 5 -type f", intern=TRUE)或 类似的方法生成文件名。