बस कमांड लाइन से एक बार में कई फाइलों को कॉपी करें
ऐसे कई तरीके हैं जिनसे आप इसे हासिल कर सकते हैं। सबसे आसान मैंने देखा है कि निम्नलिखित का उपयोग करना है।
cp /home/usr/dir/{file1,file2,file3,file4} /home/usr/destination/
वाक्यविन्यास cp कमांड का उपयोग करके निर्देशिका के लिए पथ द्वारा वांछित फ़ाइलों को उन सभी फ़ाइलों के साथ स्थित करता है, जिन्हें आप कोष्ठक में लिपटे हुए कॉपी करना चाहते हैं और अल्पविराम द्वारा अलग किए जाते हैं।
सुनिश्चित करें कि फ़ाइलों के बीच कोई रिक्त स्थान नहीं हैं। कमांड का अंतिम भाग /home/usr/destination/
, वह निर्देशिका है जो आप फ़ाइलों को कॉपी करना चाहते हैं।
या यदि सभी फ़ाइलों में एक ही उपसर्ग है लेकिन अलग-अलग अंत आप इस तरह से कुछ कर सकते हैं:
cp /home/usr/dir/file{1..4} ./
जहां file1, file2, file3 और file4 की नकल की जाएगी।
आपने किस तरह से इस प्रश्न का उत्तर दिया है, मेरा मानना है कि यह वही है जो आप खोज रहे हैं, लेकिन यह भी लगता है कि आप फ़ाइलों की सूची से पढ़ने और एक निश्चित निर्देशिका में उन सभी को कॉपी करने के लिए एक कमांड की तलाश कर रहे हैं। अगर ऐसा है तो मुझे बताएं और मैं अपना जवाब संपादित करूंगा।
अजगर के साथ डुप्लिकेट से निपटना
इसलिए मैंने थोड़ी सी स्क्रिप्ट लिखी कि मेरा मानना है कि काम पूरा करना चाहिए। हालाँकि, मुझे यकीन नहीं है कि आप अजगर में कितने अच्छे हैं (यदि सभी में निपुण हैं) तो मैं यह समझाने की कोशिश करूंगा कि इस स्क्रिप्ट का सबसे अच्छा उपयोग कैसे किया जा सकता है और कृपया इसके बारे में अधिक से अधिक प्रश्न पूछें।
import os,sys,shutil
### copies a list of files from source. handles duplicates.
def rename(file_name, dst, num=1):
#splits file name to add number distinction
(file_prefix, exstension) = os.path.splitext(file_name)
renamed = "%s(%d)%s" % (file_prefix,num,exstension)
#checks if renamed file exists. Renames file if it does exist.
if os.path.exists(dst + renamed):
return rename(file_name, dst, num + 1)
else:
return renamed
def copy_files(src,dst,file_list):
for files in file_list:
src_file_path = src + files
dst_file_path = dst + files
if os.path.exists(dst_file_path):
new_file_name = rename(files, dst)
dst_file_path = dst + new_file_name
print "Copying: " + dst_file_path
try:
shutil.copyfile(src_file_path,dst_file_path)
except IOError:
print src_file_path + " does not exist"
raw_input("Please, press enter to continue.")
def read_file(file_name):
f = open(file_name)
#reads each line of file (f), strips out extra whitespace and
#returns list with each line of the file being an element of the list
content = [x.strip() for x in f.readlines()]
f.close()
return content
src = sys.argv[1]
dst = sys.argv[2]
file_with_list = sys.argv[3]
copy_files(src,dst,read_file(file_with_list))
इस स्क्रिप्ट का उपयोग करने के लिए अपेक्षाकृत सरल होना चाहिए। सबसे पहले, उपरोक्त कोड को प्रोग्राम gedit (उबंटू में पूर्व-स्थापित होना चाहिए) या किसी अन्य पाठ संपादक में कॉपी करें।
उसके पूरा होने के बाद, फ़ाइल को अपने होम डायरेक्टरी में मूवमेंटो के रूप में सेव करें (यह कोई भी डायरेक्टरी हो सकती है लेकिन आसानी से इंस्ट्रक्शंस को आसानी से होम डाइरेक्टरी का उपयोग करने देती है) या डायरेक्टरी को उस फाइल में जोड़ें जो आपके पेटीएम में समाहित है। फिर cd
टर्मिनल से अपने होम डायरेक्टरी (या जो भी डायरेक्टरी आपने मूवमेंट को सेव किया है) और निम्न कमांड टाइप करें:
python move.py /path/to/src/ /path/to/dst/ file.txt
यह उन सभी फ़ाइलों को कॉपी करना चाहिए जिन्हें स्रोत निर्देशिका से गंतव्य निर्देशिका में सूचीबद्ध किया गया है, प्रारूप पिक (1) .jpg, pic (2) .jpg और इसी तरह के डुप्लिकेट के साथ।
file.txt एक ऐसी फाइल होनी चाहिए जो उन सभी चित्रों को सूचीबद्ध करे जिन्हें आप प्रत्येक प्रविष्टि के साथ अपनी अलग लाइन पर कॉपी करना चाहते हैं।
किसी भी तरह से इस स्क्रिप्ट को स्रोत निर्देशिका को प्रभावित नहीं करना चाहिए, हालांकि स्रोत और गंतव्य निर्देशिका में सही पथ दर्ज करना सुनिश्चित करें और सबसे खराब यह हो सकता है कि आप फ़ाइलों को गलत निर्देशिका में कॉपी करें।
टिप्पणियाँ
- यह स्क्रिप्ट मानती है कि सभी मूल चित्र एक ही डायरेक्टरी में हैं। यदि आप इसे उप निर्देशिकाओं की जाँच करना चाहते हैं तो स्क्रिप्ट को संशोधित करना होगा।
- यदि आप गलती से किसी फ़ाइल का नाम गलत करते हैं, तो स्क्रिप्ट
"फ़ाइल मौजूद नहीं है" त्रुटि को थूक देगी और आपको जारी रखने के लिए "प्रेस दर्ज" करने के लिए संकेत देगी और स्क्रिप्ट बाकी सूची की प्रतिलिपि जारी रखेगी।
/
स्रोत
निर्देशिका और गंतव्य निर्देशिका के पथ के लिए दोनों पथ पर अनुगामी मत भूलना । अन्यथा स्क्रिप्ट आप पर एक त्रुटि थूक देगी।
cp -rp /copying/from/{folder1/,folder2/,folder3/} path/to/folder
जहांp
फ़ोल्डर अनुमति की प्रतिलिपि बनाने के लिए है।