Как переименовать часть файла - PullRequest
1 голос
/ 20 февраля 2020

Я хотел бы переименовать часть имени файла, потому что структура жестко закодирована в getfiles.

У меня есть метаболомические mzML-файлы, содержащие ltQC, sQC и образцы, но имена файлов имеют различную длину (6, 6, 7). Я пытаюсь запустить XCMS, но он принимает только ltQC и sQC. , потому что структура жестко запрограммирована на 6. Как изменить структуру имени файла, см. пример ниже:

2020-02-02_B1W1_RP_NEG_ P7_A20 _001.mzML (структура 7) на 2020 -02-02_B1W1_RP_NEG_ P7A20 _001.mzML (структура 6)

Я выделил ту часть, которую я хотел бы изменить. Если это невозможно, возможно, проще переименовать ltQC и sQC, добавив букву или цифру, поэтому я получаю структуру 7, а затем меняю структуру в getfiles на 7.

Надеюсь, кто-то может помочь, спасибо Вы:)

Лучший

1 Ответ

0 голосов
/ 20 февраля 2020

Вы можете изменить имена файлов с помощью регулярного выражения, используя 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, поэтому убедитесь, что вы создали резервные копии своих файлов перед запуском этой функции!

...