我有一个包含数千个文件的目录,我想重命名这些文件的一部分。
这是我尝试做的一个高度简化的例子:
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; 参数
有关如何解决此问题的任何想法? 对不起,我不知道如何在这里制作一个完全可重现的例子......
答案 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))