【问题标题】:r system function to cd into a folder name with spacer 系统函数 cd 到带有空格的文件夹名称
【发布时间】:2017-08-09 16:01:03
【问题描述】:

我试图从 R.cd 进入我的 linux 系统中的这个文件夹。

/projects/Temp/全球变暖

我使用下面这样的system函数

system("cd /projects/Temp/Global Warming; ls")

这不起作用。

如果我尝试上一级,system("cd /projects/Temp; ls") 一切正常,没有任何问题,但是当它尝试 cd 进入文件夹 Global Warming 时,空间是文件夹名称会产生一些问题。非常感谢任何有关如何解决此问题的建议。谢谢。

【问题讨论】:

  • 这只是您正在尝试做的事情的一个最小示例,还是您不想使用dirlist.files 来获取系统文件夹的内容?
  • @Dason,我的目标不仅仅是列出文件 :)

标签: r linux escaping system cd


【解决方案1】:

这不是 R 问题,而是一般命令行问题。对于cd,如果路径包含空格,则需要引用。

'cd "/projects/Temp/Global Warming"; ls' 应该可以工作。

【讨论】:

    【解决方案2】:

    如果您只是想输入一个目录并列出其内容,您可以将工作目录更改为该文件夹并列出其内容:

    setwd("path/to/folder with space")
    list.files()
    

    或:

    list.files("path/to/folder with space")  
    

    只列出目录中的文件,而不考虑当前目录或工作目录。

    【讨论】:

    • 您不需要为 R 中的字符向量路径转义空格,因此 list.files("path/to/folder with space") 也可以使用。他的问题是他将命令传递给 bash 命令cd
    • 感谢您指出这一点;我更新了我的答案。我避免在文件夹/文件名中使用空格,所以我实际上从来没有处理过这个问题。
    【解决方案3】:

    在 R 中,用四个连续的反斜杠后跟一个空格(即“\\\\”)替换文件路径中的空格可以解决问题。

    我建议使用 gsub() 动态执行此操作

    这里是完整的解决方案:

    myPath <- "/projects/Temp/Global Warming"
    system(paste0("cd ", gsub(" ","\\\\ ",myPath), " && ls"))
    

    注意:在linux中,如果你真的想列出感兴趣的目录中的文件,你可以使用&&。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 2015-02-08
      • 1970-01-01
      • 2011-02-07
      相关资源
      最近更新 更多