/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);
}