【问题标题】:List files with specific word and file extension列出具有特定单词和文件扩展名的文件
【发布时间】:2018-03-13 20:58:40
【问题描述】:

我在一个目录中有一堆文件,其中包含各种扩展名,但我最感兴趣的是 *.bil。每年有 12 个文件。 我坚持的是将年份与 *.bio 匹配,因此我的列表将包含 2000 年的 12 个文件。 示例文件名:

**** 编辑(添加实际文件名):

PRISM_tmin_stable_4kmM2_200001_bil.bil
PRISM_tmin_stable_4kmM2_200002_bil.bil

代码:

Filenames <- list.files("/../directory", pattern = "//.bil")

这将选择所有*.bil 文件,但有数百个,所以我只需要指定 2000 年。

有什么想法吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    list.files 命令具有通配符选项,因此您应该能够执行以下操作:

    list.files("/../directory", pattern = "*_2000*//.bil")
    

    或许

    list.files("/../directory", pattern = ".*_2000.*\\.bil")
    

    我不是 100% 清楚 list.files 是否使用正则表达式模式,而且我目前无法访问 R,所以请告诉我这是否有效。

    【讨论】:

    • 我更新以反映实际文件名,因为您建议的内容并没有真正起作用.... list.files() 确实使用正则表达式模式,但我仍然不确定该怎么做跨度>
    • 如果模式是一个正则表达式,第二个应该列出包含 _2000 后跟 .bil 的任何内容,以及这两者之间的任何内容。什么不起作用?第二个模式不匹配吗?还是匹配太多?
    【解决方案2】:

    这也应该可以,遍历 PRISM 文件夹,只提取 .bil 模式(您需要将其他文件保留在同一文件夹中,以便它理解 .bil 文件附带的栅格数据)。 recursive=T 允许您从 path(或目录)中的多个文件夹中提取,并且通过设置 pattern,您将仅提取仅具有 .bil 扩展名的文件(而不是 asc.bil 等)。

    filenames  <- list.files(path="PRISM",
                         recursive=T,
                         pattern="\\.bil$"
                         ,full.names=T)
    

    您可以在上面的代码中添加上面的详细信息,指定 2000 年。

    【讨论】:

      猜你喜欢
      • 2016-08-29
      • 2020-10-01
      • 2010-11-29
      • 2011-09-25
      • 2021-10-31
      • 2018-12-23
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      相关资源
      最近更新 更多