请帮忙-使用R,我如何在所有驱动器(硬盘驱动器以及连接的USB驱动器)上搜索特定的文件/文件夹?
例如,我正在寻找一个名为“ MyFiles”的目录,该目录可能位于C:或USB(E :)上的任何位置。我想知道目录的所有树位置。
感谢您的任何建议!
我发现这是一个老问题,但现在我们可以使用fs根据 tidyverse 博客和包 vignette 提供的包“为文件系统操作提供跨平台、统一的接口”和“平滑文件处理的一些特性”基本 R 函数”。
以下是我们如何完成这项任务fs:
fs::dir_ls(path = c("C:/", "E:/"), type = "directory", glob = "*MyFiles", recurse = TRUE)
Run Code Online (Sandbox Code Playgroud)
使用这种方法还有一些额外的优点:
recurse = #num_levels_to_recurse)到上面的代码中即可。MyFiles,我们可以将参数添加invert = TRUE到上面的代码中。list.files()这两个选项在基本 R 的函数中不可用。list.dirs()请查看本文档,fs了解文件系统操作的函数和基本 R 函数之间的全面比较。
当我误读了线程(您需要dirs)时,在评论中有些混乱。您仍然可以使用list.files()tho。我模拟了一个目录结构,查找名为“data ”的但还包含一个名为“ data” 的文件:
(pre <- list.files("/var/tmp/a", "data", recursive=TRUE, full.names=TRUE, include.dirs=TRUE))
## [1] "/var/tmp/a/data" "/var/tmp/a/l/data" "/var/tmp/a/q/data"
Run Code Online (Sandbox Code Playgroud)
(/var/tmp/a/l/data实际上只是一个文件)
但是,您只需要/想要目录,因此,如果您具有相当现代的R安装程序和purrr已安装的软件包,则可以执行以下操作:
purrr::keep(pre, dir.exists)
## [1] "/var/tmp/a/data" "/var/tmp/a/q/data"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3508 次 |
| 最近记录: |