【问题标题】:How to rename part of a file如何重命名文件的一部分
【发布时间】:2020-06-04 21:32:33
【问题描述】:

我想重命名文件名的一部分,因为该结构在 getfiles 中是硬编码的。

我有包含 ltQCs、sQCs 和样本的代谢组学 mzML 文件,但文件的名称有不同的长度 (6,6,7)。我正在尝试运行 XCMS,但它只获取 ltQCs 和 sQCs,因为结构被硬编码为 6。如何更改文件名的结构,请参见下面的示例:

2020-02-02_B1W1_RP_NEG_P7_A20_001.mzML(7的结构) 到 2020-02-02_B1W1_RP_NEG_P7A20_001.mzML(6的结构)

我已经突出显示了我想要更改的部分。如果这是不可能的,也许通过添加一个字母或数字来重命名 ltQCs 和 sQCs 可能会更容易,所以我得到一个 7 的结构,然后将 getfiles 中的结构更改为 7。

希望有人能帮忙,谢谢:)

最好的

【问题讨论】:

标签: r rename


【解决方案1】:

您可以使用删除倒数第二个下划线的gsub 使用正则表达式更改文件名

my_regex <- "(_)([[:alnum:]]{3}_[[:alnum:]]{3}[.]mzML)"
my_filename <- "2020-02-02_B1W1_RP_NEG_P7_A20_001.mzML"
gsub(my_regex, "\\2", my_filename)
#> [1] "2020-02-02_B1W1_RP_NEG_P7A20_001.mzML"

所以你可以做类似的事情

rename_mzMLs <- function(directory)
{
  filenames <- list.files(directory, pattern = ".mzML")
  my_regex <- "(_)([[:alnum:]]{3}_[[:alnum:]]{3}[.]mzML)"
  new_filenames <- gsub(my_regex, "\\2", filenames)
  file.rename(filenames, new_filenames)
}

然后通过做来运行它

rename_mzMLs("C:/path/to/mzML/files/")

显然,由于我没有任何 mzML 文件,因此我无法对此进行测试,因此请确保在运行此功能之前备份文件!

【讨论】:

  • 非常感谢!我会尝试一下 - 也许首先只是在 txt 文件上进行检查。但是我有所有文件的备份,谢谢你提到:)
  • @user12932819 好的,但请记住,它仅适用于扩展名为 .mzML 的文件,因此请记住将文本文件名更改为具有该扩展名。
猜你喜欢
  • 2020-01-29
  • 2010-11-26
  • 2011-12-03
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 2018-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多