/tmp/RtmpK4k1Ju/oldname
将整个目录从 say 移动到的最可靠的方法是什么/home/jeroen/newname
?然而,最简单的方法file.rename
并不总是有效,例如当from
和to
在不同的磁盘上时。在这种情况下,需要递归复制整个目录。
这是我想出的东西,但是它有点复杂,我不确定它是否可以跨平台工作。有没有更好的办法?
dir.move <- function(from, to){
stopifnot(!file.exists(to));
if(file.rename(from, to)){
return(TRUE)
}
stopifnot(dir.create(to, recursive=TRUE));
setwd(from)
if(all(file.copy(list.files(all.files=TRUE, include.dirs=TRUE), to, recursive=TRUE))){
#success!
unlink(from, recursive=TRUE);
return(TRUE)
}
#fail!
unlink(to, recursive=TRUE);
stop("Failed to move ", from, " to ", to);
}