Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何重命名目录?_Ruby_File Io - Fatal编程技术网

Ruby 如何重命名目录?

Ruby 如何重命名目录?,ruby,file-io,Ruby,File Io,如何在Ruby中重命名目录? 我知道如何重命名单个文件,但不知道如何重命名文件夹 FileUtils.mv旧名称,新名称 查看文件以了解更多信息。重命名将允许您重命名目录: File.rename './my-directory', './my-renamed-directory' 我有点困惑。根据,File.rename只适用于文件而不适用于目录吗?@yoyoyo:它也适用于目录。(将目录视为文件的特例)它拒绝重命名非空目录(ruby 2.2.1)FileUtils可以做到这一点在某些情况下

如何在Ruby中重命名目录?

我知道如何重命名单个文件,但不知道如何重命名文件夹

FileUtils.mv旧名称,新名称


查看文件以了解更多信息。重命名将允许您重命名目录:

File.rename './my-directory', './my-renamed-directory'

我有点困惑。根据,File.rename只适用于文件而不适用于目录吗?@yoyoyo:它也适用于目录。(将目录视为文件的特例)它拒绝重命名非空目录(ruby 2.2.1)
FileUtils
可以做到这一点在某些情况下对文件夹不起作用
File.rename
worked.By.chance您是否有一个它不起作用的示例。我很好奇,因为我看不到源代码有什么特别的地方。从我的书中可以看出,对于
FileUtils.mv
,如果
new\u name
是一个目录,那么
old\u name
将被移动到该目录中。这是正确的,就像unix mv命令一样。提供的新名称是一个目录且已存在。但如果是这种情况,rename将抛出一个错误(前提是目录非空)。我很好奇mv什么时候会失败,但重命名会像@miguelSantirso所说的那样起作用。有趣的是,mv在1.9.3中使用了rename。其中一个例子是,
File.rename
起作用,而
FileUtils.mv
失败的情况是,您尝试使用相同的名称重命名目录,或者(在不区分大小写的文件系统上)使用仅大小写不同的名称重命名目录
FileUtils.mv
尝试将目录移动到自身内部,而
File.rename
则遵循此操作。
require 'fileutils'
FileUtils.mv sourcedir, newdir