Как часть большей задачи, выполненной в R, выполненном под окнами, я хотел бы скопировать выбранные файлы между каталогами. Действительно ли возможно дать в R команду как cp patha/filea*.csv pathb
(заметьте подстановочный знак для дополнительной специи)?
Я не думаю, что есть прямой путь (стесняюсь выкладывать деньги), но что-то вроде следующего обычно работает для меня.
flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")
Примечания:
^
и $
(начало/конец строки) в regex - это распространенная ошибка, поскольку они неявные для шаблонов типа wildcard, но обязательные для regex (чтобы не выбрать имена файлов, которые соответствуют шаблону wildcard, но начинаются и/или заканчиваются дополнительным текстом). ignore.case = TRUE
к list.files
, чтобы эмулировать тот факт, что поиск по каталогам не чувствителен к регистру в этой ОС. Функция glob2rx()
предоставляет удобный способ преобразования шаблонов подстановочных знаков в регулярные выражения. Например, fpattern = glob2rx('filea*.csv')
возвращает другой, но эквивалентный regex. Вы можете
system ()
, чтобы запустить команду, как если бы она была в оболочке, включая подстановку list.files ()
aka dir ()
, чтобы выполнить подстановку / reg.exp, сопоставив себя и скопировать файлы по отдельности file.copy
на индивидуальном файлы, как показано в ответе mjv