Как переместить файл с помощью Ruby?

Я хочу переместить файл с помощью Ruby. Как мне это сделать?

Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Пошаговое руководство по созданию собственного Slackbot: От установки до развертывания
Шаг 1: Создание приложения Slack Чтобы создать Slackbot, вам необходимо создать приложение Slack. Войдите в свою учетную запись Slack и перейдите на...
178
0
95 703
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

FileUtils.move

require 'fileutils'
FileUtils.move 'stuff.rb', '/notexist/lib/ruby'

+1 Обратите внимание, что .move - это псевдоним .mv, поэтому вы также можете использовать FileUtils.mv.

Tim Knight 31.12.2008 18:45

Спасибо, мне просто нравится .move больше, чем .mv. :)

Željko Filipin 31.12.2008 18:49

Я не. mv заставляет меня чувствовать, что я нахожусь в любимой консоли;)

Erik Escobedo 03.09.2010 20:45

И что хорошо в Ruby, так это то, что в нем есть как move, так и mv, так что можно выбрать любой из них. :)

Željko Filipin 06.09.2010 13:00

Должен быть require "fileutils" (без шапки)

Clint Pachl 23.01.2018 13:11

Используйте модуль fileutils и используйте FileUtils.mv:

http://www.ruby-doc.org/stdlib-2.0/libdoc/fileutils/rdoc/FileUtils.html#method-c-mv

Вот почему мы должны публиковать ответ, а затем предоставлять ссылку на кредит / ресурс.

Tass 28.03.2014 21:49
Ответ принят как подходящий

Для этого вы можете использовать FileUtils.

#!/usr/bin/env ruby

require 'fileutils'

FileUtils.mv('/tmp/your_file', '/opt/new/location/your_file')

Помнить; если вы перемещаетесь между разделами, «mv» скопирует файл в новое место назначения и отключит исходный путь.

Забыл добавить, что по разделам перемещаться нельзя. Спасибо.

Željko Filipin 31.12.2008 18:50

На самом деле mv делает копию за вас. "Перемещает файл (ы) src в dest. Если файл и dest существуют на другом разделе диска, вместо этого файл копируется." ... ruby-doc.org/core/classes/FileUtils.html#M004330

Darkerstar 16.05.2010 11:23

Вы можете подтвердить, что файл был удален после копирования из другого раздела?

knoopx 18.08.2010 16:54

Старый вопрос, я удивлен, что никто не ответил на это простое решение. Вам не нужны fileutils или системный вызов, просто переименуйте файл в новое место.

File.rename source_path, target_path

Удачного кодирования

Переименование файлов не работает между разделами и выдает ошибку «Недопустимая связь между устройствами». FileUtils - лучший выбор в этих случаях, но для простого перемещения в том же разделе переименование работает.

d3vkit 25.01.2013 08:06

@ d3vkit, спасибо за замечание, но в Windows это работает на дисках, локальных и удаленных, например <code> File.rename 'c: /test/test.txt', 'e: /test.txt' </code>, какую ОС вы используете?

peter 25.01.2013 14:23

Ах, у меня были проблемы именно в Ubuntu с использованием некоторых сетевых ресурсов Windows. У меня также возникли проблемы с FileUtils.mv, который переместил файл, а затем сказал, что у него нет разрешения на удаление старого файла. В итоге я использовал FileUtils.cp, а затем File.delete, чтобы избавиться от старого файла.

d3vkit 25.01.2013 15:27

Это определенно не работает с разделами в Linux. Я предполагаю, что это зависит от базовых API ОС. Чтобы быть уверенным, просто используйте FileUtils.mv.

akostadinov 17.10.2014 14:24

Обратите внимание, что в некоторых случаях вы можете хочу ограничить одним и тем же разделом, как я делаю прямо сейчас, чтобы обеспечить атомарную операцию.

Zorg 04.12.2016 19:32

@ Zorg Согласен, если вы хотите использовать кросс-платформу, если другой раздел и! [OS] = ~ Windows требуют 'fileutils'; FileUtils.mv или что-то в этом роде, в любом случае я бы всегда пытался поймать перемещение файла, и в таком случае я также предпочел бы сразу использовать FileUtils

peter 04.12.2016 19:45

вот шаблон.

 src_dir = "/full_path/to_some/ex_file.txt"

 dst_dir = "/full_path/target_dir"

 #Use the method below to do the moving
 move_src_to_target_dir(src_dir, dst_dir)



 def archive_src_to_dst_dir(src_dir, dst_dir)

     if File.exist ? (src_dir)

     puts "about to move this file:  #{src_dir}"

     FileUtils.mv(src_dir, dst_dir)
 else

     puts "can not find source file to move"

 end
 end

вы можете переместить свой файл вот так

Rails.root.join ('фу', 'бар')

Это ответ на вопрос «Как создать путь / имя файла относительно корневого каталога проекта Rails?». Он ничего не двигает.

Andreas Baumgart 19.06.2017 12:58

Другие вопросы по теме