用R来复制文件

gap*_*ppy 31 copy r file

作为在Windows下运行R的大型任务的一部分,我想在目录之间复制选定的文件.是否有可能在R内给出一个命令cp patha/filea*.csv pathb(注意通配符,额外的香料)?

mjv*_*mjv 46

我不认为有一种直接的方式(害羞地脱壳),但以下的东西通常对我有用.

flist <- list.files("patha", "^filea.+[.]csv$", full.names = TRUE)
file.copy(flist, "pathb")
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我故意分两步进行分解,它们可以合并.
  • 请参阅正则表达式:R使用true regex,并在两个单独的参数中将文件模式与路径分开.
  • 请注意正则表达式中的^$(beg/end of string) - 这是一个常见的问题,因为这些是通配符类型模式所隐含的,但需要使用正则表达式(以免某些文件名与通配符模式匹配,但也要启动和/或者以其他文字结尾也是如此.
  • 在Windows世界中,人们通常会添加ignore.case = TRUE参数list.files,以便模拟目录搜索对此操作系统不区分大小写的事实.
  • R的glob2rx()函数提供了一种将通配符模式转换为正则表达式的便捷方法.例如, fpattern = glob2rx('filea*.csv')返回一个不同但等效的正则表达式.

  • 如果您打算使用此文件来复制和替换文件,请**不要忘记**在`file.copy()`中添加`overwrite = TRUE`!花费了一个小时来调试它。 (2认同)

Dir*_*tel 12

您可以

  • system()火关闭命令,如果它是在外壳,含通配
  • 使用list.files()aka dir()自己进行globbing/reg.exp匹配并单独复制文件
  • 使用file.copy单个文件,如mjv的答案所示