मैं रूबी के साथ एक फ़ाइल कैसे स्थानांतरित करूं?


जवाबों:


264

आप ऐसा करने के लिए FileUtils का उपयोग कर सकते हैं।

#!/usr/bin/env ruby

require 'fileutils'

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

याद है; यदि आप विभाजनों में आगे बढ़ रहे हैं, "mv" फ़ाइल को नए गंतव्य पर कॉपी करेगा और स्रोत पथ को अनलिंक करेगा।


मैं यह जोड़ना भूल गया कि आप विभाजन के पार नहीं जा सकते। धन्यवाद।
0eljko Filipin

6
दरअसल mv आपके लिए कॉपी करता है। "फ़ाइल को स्थानांतरित करने के लिए src। यदि फ़ाइल और भाग्य अलग-अलग डिस्क विभाजन पर मौजूद हैं, तो फ़ाइल को इसके बजाय कॉपी किया जाता है।" ... रूबी- doc.org/core/classes/FileUtils.html#M004330
डार्कस्टार

क्या आप पुष्टि कर सकते हैं कि किसी अलग पार्टीशन से कॉपी होने के बाद फाइल डिलीट हो गई है?
knoopx

89

एक पुराना सवाल, मुझे आश्चर्य है कि किसी ने भी इस सरल समाधान का जवाब नहीं दिया। आपको फ़ाइल-फाइल या सिस्टमकॉल की आवश्यकता नहीं है, बस फ़ाइल को नए स्थान पर नाम दें।

File.rename source_path, target_path

खुश कोडिंग


11
फ़ाइल का नाम विभाजन में काम नहीं करेगा, और "अवैध क्रॉस-डिवाइस लिंक" त्रुटि फेंकता है। उन मामलों में FileUtils एक बेहतर विकल्प है, लेकिन एक ही विभाजन में एक सरल चाल के लिए, नाम बदलना काम करता है।
d3vkit

@ d3vkit, धन्यवाद ने टिप्पणी की, लेकिन खिड़कियों में यह ड्राइव, स्थानीय और रिमोट पर काम करता है, उदाहरण के लिए <code> File.rename 'c: /test/test.txt', 'e: /test.txt' </ code> आप किस ओएस का उपयोग करते हैं?
पीर

1
आह, मुझे कुछ विंडोज नेटवर्क वाले शेयरों का उपयोग करके विशेष रूप से उबंटू में परेशानी हुई। मुझे FileUtils.mv से भी परेशानी हो रही थी, जो फ़ाइल को स्थानांतरित कर देती थी और फिर कहती थी कि उसके पास पुरानी फ़ाइल को हटाने की अनुमति नहीं है। मैंने पुरानी फ़ाइल से छुटकारा पाने के लिए FileUtils.cp और फिर File.delete का उपयोग करके समाप्त किया।
d3vkit

3
यह निश्चित रूप से लिनक्स पर विभाजन के दौरान काम नहीं करता है। मुझे लगता है कि यह अंतर्निहित OS APIs पर निर्भर करता है। सुनिश्चित करने के लिए, बस का उपयोग करें FileUtils.mv
akostadinov

1
कुछ मामलों में ध्यान दें कि आप एक ही विभाजन को प्रतिबंधित करना चाहते हैं , क्योंकि मैं अभी परमाणु संचालन सुनिश्चित करने के लिए कर रहा हूं।
Zorg

16

FileUtils.move

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

3
+1 ध्यान दें कि .move एक उपनाम है। Mv ताकि आप FileUtils.mv भी ​​कर सकें।
टिम नाइट

1
धन्यवाद, मुझे बस पसंद है। :)
--eljko Filipin

1
मैं नही। mvमुझे ऐसा लगता है कि मैं अपने प्रिय सांत्वना में हूं;)
एरिक एस्कोबैडो

7
और रूबी के बारे में अच्छी बात यह है कि इसमें दोनों हैं moveऔर mvइसलिए दोनों में से कोई एक चुन सकता है। :)
--eljko Filipin

1
होना चाहिए require "fileutils"(कोई कैप नहीं)
क्लिंट पच्ल

11

मॉड्यूल 'फाइलटाइल' का प्रयोग करें और फाइल यूटिल्स का उपयोग करें।

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


यही कारण है कि हमें उत्तर पोस्ट करना चाहिए और फिर क्रेडिट / संसाधन के लिए एक लिंक प्रदान करना चाहिए।
टैस

1

यहाँ एक टेम्पलेट है।

 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

-8

आप अपनी फ़ाइल को इस तरह स्थानांतरित कर सकते हैं

Rails.root.join ( 'foo', 'बार')


1
यह सवाल का जवाब है "मैं एक रेल परियोजना की जड़ निर्देशिका के सापेक्ष पथ / फ़ाइल नाम का निर्माण कैसे करूं?"। यह कुछ भी स्थानांतरित नहीं करता है।
एंड्रियास बॉमगार्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.