yihui 同盘之下重命名通常没问题,在 Windows 下跨卷就没法用 file.rename() 了,而且 file.rename() 最大的坑是当重命名失败时,它不报错,只返回 FALSE。我掉进这个坑几次之后,就开始上这个保险了:https://github.com/rstudio/blogdown/blob/ef041a8d/R/utils.R#L61-L63 即:如果重命名失败,就用复制加删除的硬核办法。 还有,file.rename() 这个函数的命名也是太随意了。R 很多函数都遵循 Unix 的命令行命名法,而这个 file.rename() 偏偏就不是 file.move()。我在脑力不足的时候经常敲出后者,一看没有自动补全才知道不对。
yihui Liechi 其实 Unix 命令的命名也是相当随意,有时候丢掉几个元音字母,有时候丢末尾一个字母,有时候缩写一个词而不缩写另一个。说来说去又要说回到那个老套话题了:命名是计算机科学里的两大难题之一。这里的重命名函数 file.rename() 和命令 mv 都是糟糕的命名例子……