将windows文件名和路径转换为unix符合名称,反之亦然

时间:2015-09-23 10:53:16

标签: r windows unix

我正在努力将Windows文件名/路径转换为unix格式,反之亦然。

我的问题,我在Windows中有一个工具,它生成一个参数文件,其中包含Windows格式的文件路径(有时是多个文件),例如C:\Users\cf\Desktop\my.fasta;C:\Users\cf\Desktop\ecoli.fasta。我通常将这些字符串拆分为;以获取文件名列表。

我在unix系统上开发我的脚本,因此像basename这样的函数不适用于这样的路径。此路径也不会被识别为不同的文件夹。此外,我编写的脚本应该在Windows和Unix系统上运行,所以我需要能在两台机器上运行的东西。

有没有办法处理两种操作系统类型中的文件名,或者我可以在str_splitgsub旁边使用的其他功能,并手动创建路径?

1 个答案:

答案 0 :(得分:0)

我在r中没有遇到过这种问题,但我认为您可以使用以下函数来拆分“;” - 分隔的路径列表,并用特定于unix的路径替换路径的特定于窗口的部分部分。

get.paths <- function(paths)
{
    file_names <- strsplit(paths, ";")[[1]]
    if (Sys.info()[["sysname"]] != "Windows")
    {
        file_names <- gsub('\\\\', '/', file_names)
        file_names <- gsub('C:/Users/', '/mnt/windows_data/', file_names)
    }
    file_names
}

这将返回一个带有适合您正在运行的系统的路径的向量。示例(在unix上):

paths <- "C:\\Users\\cf\\Desktop\\my.fasta;C:\\Users\\cf\\Desktop\\ecoli.fasta"
get.paths(paths)
 [1] "/mnt/windows_data/cf/Desktop/my.fasta"    "/mnt/windows_data/cf/Desktop/ecoli.fasta"

(和windows):

paths <- "C:\\Users\\cf\\Desktop\\my.fasta;C:\\Users\\cf\\Desktop\\ecoli.fasta"
get.paths(paths)
 [1] "C:\\Users\\cf\\Desktop\\my.fasta"    "C:\\Users\\cf\\Desktop\\ecoli.fasta"

希望这就是你所需要的。