批量重命名R中的文件

时间:2017-07-17 18:10:41

标签: r regex dataframe vector batch-rename

我有一个包含数千个文件的目录,我想重命名这些文件的一部分。

这是我尝试做的一个高度简化的例子:

public static string Parse<T>(string template, T model, Dictionary<string, object> viewBagParameters = null)
    {
        var viewBag = new DynamicViewBag();
        if (viewBagParameters != null && viewBagParameters.Any())
            viewBag.AddDictionaryValues(viewBagParameters);
        return RazorEngine.Razor.Parse(template, model, viewBag, template.GetHashCode().ToString());
    }

此代码的最后一行给出以下错误:

  

file.rename中的错误(f $ files.old,f $ files.new):无效&#39;来自&#39;   参数

有关如何解决此问题的任何想法? 对不起,我不知道如何在这里制作一个完全可重现的例子......

2 个答案:

答案 0 :(得分:1)

您的解决方案的问题是as.data.frame; file.rename()将列表作为输入。

你可以这样做:

file.rename(list.files(), paste(list.files(), "foo", sep="_")) 

但这样做的问题是你要改变文件的扩展名。上面会将mycode.r更改为mycode.r_foo,然后无法通过R打开。

答案 1 :(得分:1)

你在找这样的东西吗?

f <- as.data.frame(list.files(), header=FALSE)
colnames(f) <- 'files.old'
#"foo" will be added just before the extension
f$files.new <- sapply(f$files.old,function(x) gsub("^[^.]*.",paste(gsub(".[^.]*$", "", x), 'foo.', sep='_'),x))
file.rename(as.vector(f$files.old), as.vector(f$files.new))