Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.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 on rails RubyonRails:如何将所有文件从一个文件夹移动到另一个文件夹?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails RubyonRails:如何将所有文件从一个文件夹移动到另一个文件夹?

Ruby on rails RubyonRails:如何将所有文件从一个文件夹移动到另一个文件夹?,ruby-on-rails,ruby,Ruby On Rails,Ruby,但我还需要一种方法来重命名它们,以防发生冲突 如果存在,像?然后file.name=“1-”+file.name 或者类似的东西也许类似的东西适合你: origin = '/test_dir' destination = '/another_test_dir' Dir.glob(File.join(origin, '*')).each do |file| if File.exists? File.join(destination, File.basename(file)) File

但我还需要一种方法来重命名它们,以防发生冲突

如果存在,像
?然后file.name=“1-”+file.name

或者类似的东西

也许类似的东西适合你:

origin = '/test_dir'
destination = '/another_test_dir'

Dir.glob(File.join(origin, '*')).each do |file|
  if File.exists? File.join(destination, File.basename(file))
    FileUtils.move file, File.join(destination, "1-#{File.basename(file)}")
  else
    FileUtils.move file, File.join(destination, File.basename(file))
  end
end

致以最诚挚的问候。

上述代码可以正常工作,但没有什么错误,您使用的是
if File.exists?(File)
,它检查文件是否存在于原始文件夹/或子文件夹中(这是没有用的,因为它已经存在而被读取)。您需要检查目标文件夹中是否已存在文件。由于这种语法,“else”永远不会被执行。所有的文件都被命名为“1-filename”。 正确的做法是使用

if File.exists? File.join(destination, File.basename(file))

另一个选项是在shell中运行命令并处理响应:

command = "mv *.* #{ new_directory }/"

response = system command
然而,处理现有文件名等是另一回事