【问题标题】:List files that end with pattern and lack an extension列出以模式结尾且缺少扩展名的文件
【发布时间】:2022-11-28 19:45:39
【问题描述】:

我有一个包含多个包含文件的子目录的目录。 文件本身没有扩展名;但是,每个文件都有一个扩展名为".hdr" 的附加头文件。

在 R 中,我想列出所有包含字符串 map_masked 并以模式 "masked" 结尾的文件名,但我只想要没有扩展名的文件(那些结尾使用模式,而不是头文件)。

正如this answer 中所建议的那样,我尝试使用$ 符号来指示模式应该出现在一行的末尾。

这是我使用的代码:

dir <- "/my/directory"

list.files(dir, pattern = "map_masked|masked$", recursive = TRUE)

但是,输出如下所示:

[1] "subdirectory/something_map_masked_something_masked"
[2] "subdirectory/something_map_masked_something_masked.hdr"
etc.

现在,如何告诉 R 排除扩展名为 ".hdr" 的文件? 我知道这可以通过在输出上应用过滤器来轻松完成,但我更想知道我的代码有什么问题,并了解为什么 R 在这种情况下会以这种方式运行。

【问题讨论】:

  • 使用pattern = "map_masked.*masked$"
  • 谢谢,这有效!

标签: r regex path


【解决方案1】:

您可以使用

list.files(dir, pattern = "map_masked.*masked$", recursive = TRUE)

它返回包含 map_masked 并以 masked 字符串结尾的文件路径。

细节:

  • map_masked - 固定字符串
  • .* - 尽可能多的任意零个或多个字符
  • masked - masked 子字符串
  • $ - 字符串结尾。

请参阅regex demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-14
    • 2011-10-01
    • 2017-03-07
    • 1970-01-01
    • 2018-05-10
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多