作为在 Windows 下运行的 R 中执行的更大任务的一部分,我希望在目录之间复制选定的文件。是否可能在 R 中给出像
cp patha/filea*.csv pathb
这样的命令(请注意通配符,以增加乐趣)?我认为没有直接的方法(除非使用shell),但以下类似的方法通常对我有用。
flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")
注意:
^
和$
(字符串的开头和结尾)——这是一个常见的错误,因为在通配符类型的模式中,这些内容是隐含的,但是在正则表达式中是必需的(以防选择一些文件名与通配符模式匹配,但同时以其他文本开头和/或结尾)。list.files
添加ignore.case = TRUE
参数,以模拟此操作系统中目录搜索不区分大小写的事实。glob2rx()
函数提供了一种将通配符模式转换为正则表达式的便捷方法。例如fpattern = glob2rx('filea*.csv')
返回一个不同但等效的正则表达式。你可以:
system()
来执行一个命令,就像在shell中一样,包括globbing(文件名扩展)。list.files()
或者别名dir()
手动进行globbing(文件名扩展)和正则表达式匹配,然后逐个复制文件。file.copy
。dir
。它与 list.files
完全相同...奇怪同时存在两个。 - MichaelChirico
"^filea.+[.]csv"
。 - Marekignore.case = TRUE
。我已经相应地进行了编辑,谢谢。 - mjvfile.copy()
中添加overwrite = TRUE
!我因此浪费了一个小时进行调试。 - micstr