使用大括号扩展来匹配linux

时间:2018-05-16 15:19:55

标签: r linux bash glob

我有一系列顺序目录,用于从我远程登录并从R终端处理的linux服务器上收集文件。

/ r18_060,/ r18_061,... / r18_118,/ r18_119

每个目录都是记录数据的日期,它包含一系列带有标准前缀的文件,例如" fl.060.gz"

我必须提供一个函数,该函数包含多个system()命令以及当天的linux glob。我想将年份分为60天,以使质量保证/质量控制更易于管理。由于我在glob中从099 - 100过渡,我必须使用大括号扩展来匹配正确的天数。

    ls -d /root_driectory/r18_{0[6-9]?,1[0-1]?}
    ls -d /root_driectory/r18_{060..119} 

当我将这些globs手动输入到我的bash shell中时,所有这些工作正常,但是当system()函数通过R提供类似的命令时,我收到错误。

    day_glob <- {060..119}
    system(paste("zcat /root_directory/r_18.", day_glob, "/fl.???.gz > tmpfile", sep = "")
    >gzip: cannot access '/root_directory/r18_{060..119}': No such file or directory

我知道这可能是system()函数操作的shell中的错误,但是当我查询它时它提供了正确的环境和用户名

    system("env | grep ^SHELL=")
    >SHELL=/bin/bash 
    system("echo $USER")
    >tgw

有人知道为什么在通过R&#39; system()命令传递时失败了吗?如果不完全删除系统调用,我该怎么做才能解决这个问题?有许多依赖这些函数的脚本,重写整个R脚本系列会让时间过长。

以前我一直在使用50天的间隔来避免这个问题,但我认为这应该是容易改变的东西,并且每年减少一次我的QA / QC脚本。我是Linux操作系统的新手,所以我想我可能只是遗漏了一些明显的东西。

0 个答案:

没有答案