आमतौर पर, आप बस शॉटवेल को खोलना और फ़ोल्डर में खींचना चाहेंगे।
यदि आपको जरूरत है, तो आप शेल को CR2 फ़ाइलों की सूची बना सकते हैं और शॉटवेल को केवल उन फाइलों को खोलने के लिए कह सकते हैं। कभी-कभी ऐसा हो सकता है कि आप क्या चाहते हैं, लेकिन इस मामले में जो आपने शॉटवेल के व्यवहार के कारण बहुत कुछ नहीं किया था - कुछ अन्य परिस्थितियों में, एक विशेषता - स्वचालित रूप से आपको अन्य छवि फ़ाइलों को दिखाने की (सभी प्रकार की) में रहने वाली आपके द्वारा खोले गए चित्रों के समान फ़ोल्डर।
शॉटवेल यह सुनिश्चित करने के लिए कि केवल उन छवियों के बारे में जानता है जिनमें आप रुचि रखते हैं, आप डायरेक्टरी ट्री को कहीं और क्लोन कर सकते हैं, केवल .cr2फाइलों और उन फ़ोल्डरों को कॉपी कर सकते हैं जिनमें उन्हें शामिल किया गया है, लेकिन कुछ और नहीं। हालांकि, इसमें अतिरिक्त अतिरिक्त जगह हो सकती है। इसलिए एक और तरीका यह है कि प्रतीकात्मक संबंधों की एक पदानुक्रम का निर्माण किया जाए - जहाँ आपकी मूल फ़ाइलों की प्रतियों की एक नई निर्देशिका ट्री होने के बजाय .cr2, आपके पास उनके लिए एक नई निर्देशिका ट्री ऑफ़ सीमिंक है । यह काफी कम जगह लेता है।
यह उत्तर उन सभी दृष्टिकोणों को शामिल करता है।
शॉटवेल में छवियों का फ़ोल्डर खोलना (सबफ़ोल्डर्स सहित)
शॉटवेल खुद आपको तस्वीरों की एक पूरी डायरेक्टरी ट्री खोलने के दो तरीके देता है। यदि ये आपके लिए काम करेंगे, तो आपको कमांड लाइन में कुछ भी चालाक करने की आवश्यकता नहीं होगी या इसका उपयोग बिल्कुल भी नहीं किया जाएगा। यदि नहीं, तो आप किसी अन्य तकनीक के संबंध में ऐसा कर सकते हैं। (उदाहरण के लिए, यदि आप अपनी .cr2फ़ाइलों की सहानुभूति या प्रतियों की नई निर्देशिका बनाते हैं, तो आप इसे खोलने के लिए इनमें से किसी एक का उपयोग कर सकते हैं।)
तरीका 1: बस Shotwell में पूरा फ़ोल्डर खोलें।
Shotwell में, फ़ाइल मेनू में, फ़ोल्डर से आयात करें पर क्लिक करें । फिर उस फ़ोल्डर का चयन करें जिसे आप छवियों से आयात करना चाहते हैं। यह .cr2फ़ाइलों तक सीमित नहीं होगा , लेकिन यदि आप .cr2एक डिजिटल कैमरे से बनाई गई छवियों वाले कई सबफ़ोल्डर्स से फाइलें खोल रहे हैं , तो सबसे अधिक संभावना है कि वे केवल मौजूद फाइलें होंगी।

अधिक जानकारी के लिए सभी चित्रों को पुनरावर्ती (किसी भी सबफ़ोल्डर शामिल करें) दिखाने के लिए जैकब का उत्तर देखें ।
तरीका 2: फोल्डर को शॉटवेल में खींचें।
अधिकांश डेस्कटॉप वातावरण और फ़ाइल ब्राउज़र के साथ, आप शॉटवेल को भी खोल सकते हैं और उस फ़ोल्डर को खींच सकते हैं जिसमें आपकी छवियां शॉटवेल विंडो में हैं। फोल्डर से इम्पोर्ट की तरह , यह एक और तरीका है जो शॉटवेल फोटो खोलने की सिफारिश करता है।

जब आप फ़ाइल ब्राउज़र विंडो या अपने डेस्कटॉप से शॉटवेल में खींचते हैं, तो आप एक विशिष्ट पुस्तकालय में खींच सकते हैं। या यदि आपके पास कई पुस्तकालय स्थापित नहीं हैं, तो आप मूल रूप से कहीं भी खींच सकते हैं और यह काम करता है। (आपको बाएँ फलक में खींचने की भी ज़रूरत नहीं है।)
यह विधि बहुत सुविधाजनक है, और यह मैन्युअल रूप से फ़ोल्डर का चयन करने के रूप में शक्तिशाली है ( फ़ाइल > फ़ोल्डर से आयात , जैसा कि ऊपर वर्णित है)। जब आप इन विधियों में से किसी एक का उपयोग करके फ़ाइलों या फ़ोल्डरों को खोलते हैं, तो शॉटवेल आपको फोटो को उसकी लाइब्रेरी में कॉपी किए बिना खोलने का विकल्प देता है।

नकल के बिना आयात करने के लिए, कॉपी फ़ोटो के बजाय आयात करें पर क्लिक करें ।
इमेज फिल्म्स की सूची के साथ शॉटवेल को लॉन्च करना
यदि किसी कारण से आप चाहते हैं या टर्मिनल में एक कमांड चलाकर ऐसा करने की आवश्यकता है, तो आप shotwellकमांड को चला सकते हैं और प्रत्येक छवि के फ़ाइलनाम को एक तर्क के रूप में पास कर सकते हैं। ग्लोबस्टार यह आसान बनाता है:
shopt -s globstar
shotwell **/*.cr2
यह .cr2वर्तमान निर्देशिका में कहीं भी स्थित फाइलों को खोलता है । यह शॉटवेल चलाने से अलग है और फिर फ़ोल्डर को अंदर खींच रहा है, उस शॉटवेल में केवल उन फ़ाइलों को आयात करने का प्रयास किया जाएगा जिनके नाम आप इसे देते हैं। हालाँकि, चूंकि शॉटवेल अक्सर उन फ़ोल्डरों से अन्य छवि फ़ाइलों को दिखाता है क्योंकि आपने जिन फ़ाइलों को खोलने के लिए कहा है, यह आपकी आवश्यकताओं के लिए पर्याप्त नहीं हो सकता है। (और आपकी समस्या के बारे में आपके द्वारा दी गई जानकारी से पता चलता है कि यह नहीं है । एक विकल्प के लिए नीचे देखें।)
यह फाइल या सबफ़ोल्डर जिनके नाम के साथ शुरू शामिल नहीं है. । हालाँकि, अगर आपके पास CR2 फाइलें हैं, जिनके नाम एक डॉट के साथ शुरू होते हैं, तो अधिकांश समय आप शायद उन्हें वैसे भी शॉटवेल में खोलना नहीं चाहते हैं। जब तक आपने जानबूझकर अपनी फ़ाइलों या फ़ोल्डरों का नाम इस तरह नहीं रखा है, तब तक किसी इमेज या डॉक्यूमेंट फाइल एक्सटेंशन के साथ एक डॉटफाइल एक वास्तविक छवि या दस्तावेज़ के बजाय मेटाडेटा फ़ाइल होने की अधिक संभावना है। उदाहरण के लिए, macOS अक्सर बाहरी मीडिया (फ्लैश ड्राइव और डिजिटल कैमरा सहित) तक पहुंचते समय ऐसी फाइलें (जैसे, ._kittens.cr2एक वास्तविक तस्वीर के लिए kittens.cr2) जोड़ता है ।
यदि आप ऐसी फाइलें भी ढूंढना.. चाहते हैं, जिनके नाम से शुरू होता है या जो उन फ़ोल्डरों में हैं जिनके नाम से शुरू होता है , तो डॉटग्लोब को भी सक्षम करें। आप के साथ ऐसा कर सकते हैं shopt -s dotglobया दोनों पारित करके globstarऔर dotglobकरने के लिए shoptनिर्मित:
shopt -s globstar dotglob
डिफ़ॉल्ट रूप से, ग्लोब केस-संवेदी होते हैं। लेकिन आप चाहते हो सकता है फ़ाइल नाम से मेल करने के मामले-insensitively तो में समाप्त होने खुली फ़ाइलों के रूप में, .cr2, .Cr2, .cR2, और .CR2। ऐसा करने के लिए, या तो:
चलाकर nocaseglob सक्षम shopt -sके साथ nocaseglobया तो अपने आप में या अन्य खोल विकल्पों के साथ। उदाहरण के लिए, shotwellसभी .cr2फाइलों को चलाने के लिए, केस- .इनसेंसिटिव और इन-फाइल्स और इन-फाइल्स में फाइलों को .खोजना:
shopt -s globstar dotglob nocaseglob
shotwell **/*.cr2
या फिर , का उपयोग .[cC][rR]2करने के बजाय .cr2अपने ग्लोब पैटर्न अपने आप में। उदाहरण के लिए, यह ऊपर के समान है:
shopt -s globstar dotglob
shotwell **/*.[cC][rR]2
ध्यान दें कि केस सेंसिटिविटी पूरी तरह से अलग है कि .फाइल और फोल्डर मैच हुए हैं या नहीं । आप dotglobऊपर दिए गए उदाहरणों से हटा सकते हैं और वे अभी भी मामले-असंवेदनशील हो सकते हैं।
केवल वर्तमान निर्देशिका का उपयोग करने के बजाय एक निर्देशिका निर्दिष्ट करने के लिए , अपना नाम और एक ग्लोब /से पहले रखें **/*.cr2। उदाहरण के लिए, shotwellइस के साथ ऊपर दिए गए कमांड को बदलने से आपके होम डायरेक्टरी .cr2की Picturesउपनिर्देशिका के अंदर सभी फाइलें खुल जाएंगी :
shotwell ~/Pictures/**/*.cr2
अपनी वर्तमान निर्देशिका का उपयोग करने वाली पहली कमांड के विपरीत, कोई फर्क नहीं पड़ता कि आप उस कमांड को चलाते हैं या नहीं, आप उसी फाइल को खोलने के लिए शॉटवेल को बताएंगे।
परिक्षण
यदि आपको वास्तव में इसके लिए टर्मिनल का उपयोग करना है, तो मैं अनुमान लगा रहा हूं कि यह कुछ अधिक जटिल का हिस्सा हो सकता है। आप चाहें, तो आप वास्तव में उन्हें बदल कर चलाने से पहले इस तरह के आदेशों का परीक्षण कर सकते shotwellके साथ printf '%s\n'। फिल्मनामों को शॉटवेल में पारित करने के बजाय, वह उन्हें प्रति पंक्ति एक सूची देता है। उदाहरण के लिए, मेरी मशीन पर:
ek@Io:~$ printf '%s\n' ~/tmp/**/*.cr2
/home/ek/tmp/another image.cr2
/home/ek/tmp/image.cr2
/home/ek/tmp/some folder/image3.cr2
ग्लोबस्टार और अन्य शेल विकल्प बंद करना
ग्लोबस्टार शेल विकल्प को काम करने के लिए सक्षम किया गया है, जो कि shopt -s globstarकमांड (ऊपर) ने किया है। यदि यह पहले से ही सक्षम है, तो आपको कई कमांड की आवश्यकता नहीं है। और आपको केवल शेल उदाहरण के अनुसार ग्लोबस्टार सेट करने की आवश्यकता है।
आप चल कर ग्लोबस्टार को बंद कर सकते हैं:
shopt -u globstar
और अगर आप कर सकते हैं की जाँच करें कि क्या globstar चालू या बंद चलाकर है:
shopt globstar
यदि आप किसी स्क्रिप्ट में ग्लोबस्टार का उपयोग कर रहे हैं, तो आपको इसे वापस बंद करने पर विचार करना चाहिए यदि कोई कोड हो सकता है जो उसी स्क्रिप्ट में बाद में आता है जो ग्लोबस्टार को ध्यान में रखकर नहीं लिखा गया है। उदाहरण के लिए, **जब आप मतलब लिखते हैं तो *आमतौर पर कोई समस्या नहीं होती है जब ग्लोबस्टार को अक्षम किया जाता है, लेकिन ग्लोबस्टार चालू होने के बाद, यह कमांड को प्रभावित करने की गंभीर समस्या पैदा कर सकता है, जो किसी भी उद्देश्य से अधिक फ़ाइलों को प्रभावित करता है।
इसी प्रकार, यदि आप dotglob या nocaseglob इस्तेमाल किया और तुम भी उन्हें बंद करना चाहते हैं, तो आप ऐसा साथ कर सकते हैं shopt -u dotglobऔर shopt -u nocaseglobक्रमश:। आप shopt -uउन्हें एक ही समय में अनसेट करने के लिए कई शेल विकल्प भी पास कर सकते हैं । उदाहरण के लिए, बंद करने के लिए globstar, dotglob, और nocaseglob:
shopt -u globstar dotglob nocaseglob
ग्लोबस्टार की तुलना में, कम गंभीर गलतियाँ हैं जो आप कर सकते हैं क्योंकि आप भूल गए थे कि आपने डॉटग्लोब या नोसेसेग्लोब को छोड़ दिया है। लेकिन अन्य लोग (उन लोगों को भी शामिल करें जिन्हें आप उबंटू जैसी साइटों पर सलाह देते हैं) आमतौर पर मान लेते हैं कि जब तक आप उन्हें अन्यथा नहीं बताते, तब तक वे उपयोग करने की आज्ञा देने के लिए डॉटग्लोब और नोसेग्लोब अक्षम हैं।
इन ग्लोब-संबंधित शेल विकल्पों के बारे में अधिक जानकारी के लिए (और सामान्य रूप से ग्लब्स पर भी ), बैश संदर्भ मैनुअल देखें । वे सभी मुख्य रूप से 4.3.2 द शॉपट बिल्डिन में शामिल हैं । ग्लोबस्टार के लिए, 3.5.8.1 पैटर्न मिलान भी देखें । डॉटग्लोब के लिए, 3.5.8 फ़ाइलनाम विस्तार भी देखें ।
एक नई निर्देशिका ट्री का निर्माण
चूंकि आपके मामले में आपको वास्तव में केवल .cr2 फाइलों को दिखाने के लिए शॉटवेल की जरूरत है , आपके पास गैर- .cr2फाइलें फाइलों के साथ एक ही फ़ोल्डर में हैं .cr2, और शॉटवेल में छवि ब्राउज़िंग स्वचालित रूप से उन फाइलों को भी पेश कर रही है , ऐसा लगता है कि आपको एक फ़ोल्डर की आवश्यकता होगी जिन .cr2फ़ाइलों को आप खोलने का प्रयास कर रहे हैं , उनकी तुलना में कोई अन्य छवि फ़ाइलें नहीं हैं।
फ़ाइलों को स्थानांतरित करना, जैसा कि आपने सुझाव दिया है , एक दृष्टिकोण है, लेकिन मैं इसके बजाय फ़ाइलों की प्रतिलिपि बनाने या, बेहतर, फ़ाइलों की प्रतीकात्मक लिंक बनाने की सलाह देता हूं (यह भी देखें FOLDOC ), क्योंकि:
- यदि आप फ़ाइलों को डिवाइसों में स्थानांतरित कर रहे हैं, तो वैसे भी कॉपी करने की आवश्यकता होती है, इसलिए उस स्थिति में चलना अधिक तेज़ नहीं है।
- यदि आपके पास जगह है, तो यह अक्सर एक अच्छा विचार है कि जब तक आप संतुष्ट नहीं हो जाते, तब तक आपके द्वारा शुरू किए गए हर चीज के अनमॉडिफाइड फोल्डर को रखना आपकी जरूरतों के हिसाब से सही है। जाहिर है कि यह हमेशा लागू या व्यावहारिक नहीं है। लेकिन आपके मामले में, ये फाइलें डेटा रिकवरी ऑपरेशन का परिणाम हैं। यह ठीक से आसानी से उपयोग किए गए रिकॉर्ड को रखने के लिए उपयोगी हो सकता है कि क्या बरामद किया गया था और कहां से।
- यदि आप प्रतीकात्मक लिंक बनाने के लिए चुनते हैं, तो खपत अतिरिक्त स्थान की मात्रा बहुत कम है । (यदि लक्ष्य डिस्क पूरी तरह से भरा हुआ है , हालांकि, तब भी आपको उस पर स्थान खाली करने की आवश्यकता होगी - या एक अलग लक्ष्य डिस्क का उपयोग करें - जिससे सहानुभूति पैदा की जा सके।)
आपके लिए एक और निर्णय भी है। क्या आप एक ही डायरेक्टरी में सभी नई प्रविष्टियाँ (चाहे वे कॉपियाँ या सिम्बलिंक्स हों) बनाते हैं, फ़ाइल पदानुक्रम को चपटा करते हैं? या आप कम से कम एक .cr2फ़ाइल वाले स्रोत पर प्रत्येक निर्देशिका के अनुरूप गंतव्य पर निर्देशिका बनाते हैं ?
फ़ाइल पदानुक्रम को समतल करने से आप आसानी से एक बार में सभी फ़ाइलों को देख सकते हैं। विशेष रूप से, फ़ाइलों के नाम और आकार सभी को एक साथ देखना आसान है, साथ ही साथ चित्रमय फ़ाइल ब्राउज़र में फ़ाइलों के किसी भी संयोजन का चयन करना आसान है।
लेकिन यह इस बारे में भी जानकारी खो देता है कि वे किन फ़ोल्डरों में थे, जो मूल्यवान हो सकते हैं (हालांकि आप मूल फ़ोल्डर में वापस आ सकते हैं और यदि आप फ़ाइलों को स्थानांतरित नहीं करते हैं तो वहां उनके लिए देख सकते हैं)।
फ़ाइल पदानुक्रम को समतल करने के साथ बड़ी समस्या, हालांकि, अगर आपके पास अलग-अलग स्थानों में एक ही नाम की दो या अधिक फाइलें हैं , तो क्या होता है । यदि आप फ़ाइल पदानुक्रम को समतल करते हैं, तो आप इसे कैसे करते हैं, इस पर निर्भर करता है कि या तो सभी पहले कॉपी किए गए (या लिंक किए गए) विफल होंगे और आपको एक त्रुटि या चेतावनी मिलेगी, या सभी लेकिन अंतिम प्रतिलिपि (या लिंक) होगी अधिलेखित हो जाना ।
यह एक और कारण है जो मैं फ़ाइलों को स्थानांतरित करने के बजाय कॉपी करने या सिम्बल बनाने की सलाह देता हूं। यदि आप "सफलतापूर्वक" एक से अधिक फ़ाइलों को एक ही फ़ाइल में ले जाते हैं, तो आप सभी को खो देते हैं, लेकिन अंतिम!
उपनिर्देशिका के बिना एक ही निर्देशिका में सब कुछ समतल करने के नुकसान के कारण, मैं जो दृष्टिकोण यहां ले रहा हूं वह गंतव्य पर एक नई निर्देशिका पेड़ का निर्माण करता है।
रास्ता 1: नकल
मैं इसे पहले दिखाता हूं क्योंकि यह थोड़ा सरल है, लेकिन मैं आपको इसके बजाय प्रतीकात्मक लिंक ("वे 2") बनाने का सुझाव देता हूं, खासकर यदि गंतव्य ड्राइव में सभी फाइलों को रखने के लिए पर्याप्त स्थान नहीं हो सकता है। "वे 2", जो थोड़ा अधिक जटिल है, बहुत अधिक विस्तृत है क्योंकि उस तकनीक का उपयोग करने के लिए कम संसाधन प्रतीत होते हैं, यह वह तरीका है जिससे मुझे उम्मीद है कि इस स्थिति में अधिकांश लोग पसंद करेंगे, और जानकारी जो दोनों विधियों पर लागू होती है - रास्तों में रिक्त स्थान से बचने के बारे में बुनियादी सलाह - यहाँ के बजाय वहाँ दी गई है।
जब आपको निर्देशिका ट्री की प्रतिलिपि बनाने की आवश्यकता होती है और आपको कॉपी ऑपरेशन को अनुकूलित करने की आवश्यकता होती है, तो आपको आमतौर पर rsyncइसके बजाय उपयोग करना चाहिए cp। यह उन मामलों में से एक है।
की जगह srcअपने सभी CR2 फ़ाइलों से युक्त शीर्ष स्तर की डायरेक्टरी के लिए पथ के साथ, और जगह destनिर्देशिका आप बनाना कि CR2 फ़ाइलें, चलाने के लिए सांकेतिक लिंक के एक पदानुक्रम में शामिल होंगे चाहते हैं उसका नाम के साथ:
rsync -rl --prune-empty-dirs --include='*/' --include='*.cr2' --exclude='*' src/ dest
/स्रोत निर्देशिका के नाम के बाद मत भूलना , जब तक कि आप एक अतिरिक्त शीर्ष-स्तरीय निर्देशिका नहीं बनाना चाहतेdest । है यही कारण है कि, अगर आप पीछे छोड़ देते हैं /, तो rsyncगंतव्य निर्देशिका आप के लिए अंदर कर देगा, dest। उदाहरण के लिए, मान लीजिए srcकि एक सापेक्ष पथ है जिसमें कोई नहीं है /। फिर:
- साथ
src/अपने में rsyncआदेश, आप एक सिमलिंक मिल dest/foo/bar.cr2फ़ाइल के लिए src/foo/bar.cr2।
- साथ
srcअपने में rsyncआदेश, आप एक सिमलिंक मिल फ़ाइल के लिए ।dest/src/foo/bar.cr2src/foo/bar.cr2
चूँकि यह शीर्ष-स्तरीय निर्देशिका के लिए भ्रामक हो सकता है, जहाँ सह-नाम उसी नाम के लिए रखा जाएगा जो शीर्ष-स्तरीय निर्देशिका में .cr2फ़ाइलों के साथ है, जो सहानुभूति इंगित करेगा, मैं आपको /गंतव्य के अंत में शामिल करने की सलाह देता हूं आपके rsyncआदेश में निर्देशिका का नाम । (और, स्रोत निर्देशिका के लिए, इसे एक निर्देशिका दें जो खाली है, मौजूद नहीं है, या अन्यथा इस उद्देश्य के लिए समर्पित है। अन्यथा, आप किसी अन्य फ़ोल्डर को बंद कर देंगे।)
जैसा कि आम तौर मामला है, जब आप किसी फ़ाइल या एक कमांड लाइन कार्यक्रम या स्क्रिप्ट के लिए निर्देशिका का नाम पारित, यदि आपका गंतव्य या स्रोत निर्देशिका पथ किसी भी खाली रिक्त स्थान (या वर्ण खोल, की तरह से विशेष रूप से इलाज किया शामिल \, $, ', और विभिन्न अन्य विराम चिह्न), तो आपको उन्हें उद्धृत करना होगा । मैंने यह करने के लिए विस्तृत किया है कि रिक्त स्थान के सबसे सामान्य मामले के लिए, "वे 2" में - उस अनुभाग में उद्धृत करने के बारे में सलाह यहां भी लागू होती है। हालाँकि, यदि आप सुनिश्चित नहीं हैं कि किसी फ़ोल्डर का नाम कैसे उद्धृत किया जाए, तो आप फ़ोल्डर को केवल टेम्रामिनल में खींचकर उबंटू कर सकते हैं; इसका पूरा रास्ता सही उद्धरण के साथ चिपकाया जाएगा ।
सिर्फ .cr2फाइलों और फ़ोल्डरों को कॉपी करने के बाद , आप गंतव्य फ़ोल्डर को शॉटवेल में खोल सकते हैं। (ऊपर "शॉटवेल में छवियों का फ़ोल्डर खोलना (सबफ़ोल्डर्स सहित) देखें " ।) हालांकि, दौड़ने से पहले rsync, मैं आपको सलाह देता हूं कि यदि आप प्रविष्टियों को छोड़ना शुरू करते हैं .और यदि आप केस-वेरिएंट प्रत्ययों वाली प्रविष्टियों को शामिल करना चाहते हैं। यदि हां, तो आपको कुछ अलग rsyncकमांड चलाना होगा ।
डॉटेड एंट्रीज़ और केस सेंसिटिविटी की हैंडलिंग को कस्टमाइज़ करना
आप यह rsyncबदलने के लिए एक अलग कमांड का उपयोग करना चाह सकते हैं कि क्या फाइलें और निर्देशिकाएं जो डॉट के साथ शुरू होती हैं, छोड़ दी जाती हैं या नहीं और क्या आप प्रत्यय के मिलान में केस-सेंसिटिविटी चाहते हैं या नहीं .cr2।
आदेश ऊपर करता है निर्देशिका और फ़ाइलें हैं जिनके नाम के साथ शुरू में शामिल हैं .। ऐसी फ़ाइलों और निर्देशिकाओं को बाहर करने के लिए, --exclude='.*/' --exclude='.*'अन्य सभी --includeएस और --excludeएस के सामने रखें । rsyncइसके बजाय , इस आदेश का उपयोग करें ( srcऔर dest, के लिए उपयुक्त प्रतिस्थापन के साथ ):
rsync -rl --prune-empty-dirs --exclude='.*/' --exclude='.*' --include='*/' --include='*.cr2' --exclude='*' src/ dest
rsyncपता चला आदेशों अब तक केस-संवेदी किया गया है और उस में अंत फ़ाइलों की प्रतिलिपि नहीं होगा .CR2, .Cr2या .cR2के बजाय .cr2। यदि आप चाहते हैं कि ऐसी फ़ाइलों की प्रतिलिपि बनाई जाए, तो आपको उसके स्थान पर --includeपैटर्न का उपयोग करके उस खाते की आवश्यकता होगी ।*.[cC][rR]2*.cr2
यह तीसरी कमांड केस-असंवेदनशील है और (पहले कमांड की तरह) उन फाइलों और निर्देशिकाओं को नहीं छोड़ती जिनके नाम इसके साथ शुरू होते हैं .:
rsync -rl --prune-empty-dirs --include='*/' --include='*.[cC][rR]2' --exclude='*' src/ dest
यदि आप फ़ाइलों को कॉपी करने का तरीका अपनाते हैं rsync, और आपको यकीन नहीं है कि आप इनमें से कौन सी कमांड चाहते हैं, तो मैं सुझाव देता हूं कि यदि आप यह सुनिश्चित करना चाहते हैं कि आप कुछ भी याद न करें। हालाँकि, आपको पता होना चाहिए कि डॉटफ़ाइल्स में मेटाडेटा हो सकता है, और छवियों की तरह नामित डॉटफ़ाइल्स वास्तव में छवियां नहीं हो सकती हैं। ऊपर "इमेज फाइलनामों की सूची के साथ लॉन्चिंग शॉटवेल " में डॉटफाइल्स पर चर्चाएं देखें , और नीचे "वे 2" में डॉटफाइल्स और केस संवेदनशीलता पर।
यह चौथा आदेश है केस-संवेदी और (दूसरा आदेश की तरह) करता छोड़ फ़ाइलों और निर्देशिकाओं जिनके नाम के साथ शुरू .:
rsync -rl --prune-empty-dirs --exclude='.*/' --exclude='.*' --include='*/' --include='*.[cC][rR]2' --exclude='*' src/ dest
तरीका 2: प्रतीकात्मक लिंक बनाना
यह वही है जो मैं आपको करने की सलाह देता हूं, हालांकि यदि आप गंतव्य ड्राइव पर पर्याप्त स्थान रखते हैं, तो मार्ग 1 ठीक है। इसका उपयोग करने के लिए आपको रास्ता 1 नहीं पढ़ना होगा।
यहाँ प्रस्तुत विधि .cr2फ़ाइलों की सूची बनाती है और सूची के माध्यम से लूप बनाती है, आवश्यकतानुसार लक्ष्य निर्देशिकाओं का निर्माण करती है और उन्हें प्रत्येक .cr2फ़ाइल के प्रतीकात्मक लिंक के साथ पॉप्युलेट करती है।
यह सिर्फ इतना जटिल है कि मैं इसे अंतःक्रियात्मक रूप से टाइप करने के बजाय इसे स्क्रिप्ट में डालने का सुझाव देता हूं। आप जहां चाहें स्क्रिप्ट रख सकते हैं, लेकिन सुविधा के लिए, मैं दिखाता हूं कि इसे सीधे अपने होम फ़ोल्डर में रखी गई स्क्रिप्ट के साथ कैसे किया जाए।
स्क्रिप्ट लिखें या पेस्ट करें।
make-symlinksअपने होम फ़ोल्डर में , एक टेक्स्ट फ़ाइल बनाएं । कोई फ़ाइल एक्सटेंशन की आवश्यकता नहीं है।
आप इसे किसी भी टेक्स्ट एडिटर की तरह कर सकते हैं, जैसे विम, नैनो, गेडिट या लीफपैड। हालांकि, लिबर ऑफिस राइटर जैसे वर्ड प्रोसेसर का उपयोग न करें। ( यदि आप चाहते थे, तो आप cat > ~/make-symlinksफ़ाइल की सामग्री में पेस्ट करके , और एक नई लाइन पर Ctrl+ दबाकर, इसे चला भी सकते हैं D।)
यदि आप स्क्रिप्ट को इसके अलावा कुछ और नाम देते हैं make-symlinks, तो जब आप स्क्रिप्ट का उपयोग करने वाले कमांड चलाते हैं, तो उस नाम का उपयोग करना सुनिश्चित करें।
#!/bin/bash
shopt -s globstar dotglob nocaseglob
for f in **/*.cr2; do
mkdir -p "$1/$(dirname "$f")"
ln -s "$PWD/$f" "$1/$f"
done
उस फ़ाइल में रखें, और फ़ाइल को सहेजें। इस स्क्रिप्ट में ग्लोबस्टार का उपयोग किया गया है, जो एक बैश फीचर " इमेजिन लिस्टनेम की सूची के साथ लॉन्चिंग शॉटवेल " में ऊपर वर्णित है ।
आप बदल सकते हैं कि यह बिंदीदार प्रविष्टियों और मामले की संवेदनशीलता को कैसे संभालता है।
अपनी आवश्यकताओं के आधार पर, आप कुछ बदलाव करना चाहते हैं:
यदि आप उन .cr2फ़ाइलों को शामिल नहीं करना चाहते हैं जिनके नाम के साथ शुरू होता है .या जो उन निर्देशिकाओं में रहते हैं जिनके नाम के साथ शुरू होता है ., लाइन dotglobसे हटा दें shopt।
फ़ाइलें और निर्देशिकाएँ जिनके नाम से शुरू होता है ., अक्सर मेटाडेटा के लिए उपयोग की जाती हैं ( ऊपर चित्र खंडन की सूची के साथ "लॉन्चिंग शॉटवेल देखें " )। दूसरी ओर, यदि आप यह सुनिश्चित करना चाहते हैं कि आपके पास सब कुछ है, या यदि कोई ऐसी चीज़ है जो आपको याद नहीं है, तो आप सुनिश्चित हैं कि वहाँ है dotglob।
आप शामिल करना चाहते हैं केवल वास्तव में है कि अंत फ़ाइलें .cr2लेकिन नहीं मामले वेरिएंट ( .CR2, .Cr2, और .cR2), तो आप निकाल देना चाहिए nocaseglob। चूंकि आपकी स्थिति में डेटा रिकवरी शामिल है और शॉटवेल आपको किसी भी फाइल को नहीं दिखाएगा जो आपने याद किया था जब आप प्रतीकात्मक लिंक की निर्देशिका खोलते हैं - यही इस पद्धति का बिंदु है, आखिरकार - आप संभवतः रखना चाहेंगे nocaseglob।
इसे अमल में लाएं।
अपनी स्क्रिप्ट निष्पादन योग्य चिह्नित करने के लिए यह कमांड चलाएँ:
chmod +x ~/make-symlinks
इसे स्रोत पर चलाएँ और गंतव्य को तर्क के रूप में पास करें।
फिर डायरेक्टरी को डायरेक्टरी डायरेक्टरी में बदलें, यानी टॉप-लेवल फोल्डर जिसमें पिक्चर्स हों। उदाहरण के लिए, यदि वे Picturesआपके घर निर्देशिका के उपनिर्देशिका में हैं, तो आप दौड़ेंगे:
cd ~/Pictures
यह वह जगह है जहाँ आप स्क्रिप्ट चलाएंगे। कमांड-लाइन तर्क के रूप में स्क्रिप्ट के लिए गंतव्य निर्देशिका पास करें।
उदाहरण के लिए, यदि आप चाहते हैं कि cr2sआपके डेस्कटॉप पर बनाई गई एक निर्देशिका को प्रतीकात्मक लिंक से जोड़ा जाए, तो चलाएं:
~/make-symlinks ~/Desktop/cr2s
या अगर आप सीधे उस निर्देशिका को अपने होम फोल्डर में चाहते हैं:
~/make-symlinks ~/cr2s
या यदि आपके पास एक ड्राइव है, /media/you/MyDriveऔर आप उस पर एक फ़ोल्डर बनाना चाहते linksहैं, जिसमें प्रतीकात्मक लिंक शामिल हैं:
~/make-symlinks /media/you/MyDrive/links
लेकिन अगर ड्राइव /media/you/My Drive(एक स्थान के साथ) है, तो आपको उद्धरण का उपयोग करना होगा। इनमें से कोई भी कार्य (केवल एक का उपयोग करें, उन सभी को न चलाएं):
~/make-symlinks '/media/you/My Drive/links'
~/make-symlinks /media/you/'My Drive'/links
~/make-symlinks /media/you/My\ Drive/links
लेकिन अगर आप ~अपने घर निर्देशिका के लिए उपयोग करते हैं, तो वह बोली न करें:
~/make-symlinks ~/'Two Words' # good
~/make-symlinks ~/Two\ Words # good
~/make-symlinks '~/Two Words' # BAD, because ~ doesn't get expanded
make-symlinksयदि यह पहले से मौजूद नहीं है, तो यह आपके लिए गंतव्य निर्देशिका बनाता है, क्योंकि यह इसके भीतर उपनिर्देशिका बनाता है। हालांकि, यह अभी भी काम करता है अगर गंतव्य पहले से मौजूद है।
आप इसे कई बार भी चला सकते हैं और उसी गंतव्य निर्देशिका को पास कर सकते हैं (उदाहरण के लिए, यदि आपने इसे Ctrl+ के साथ बाधित किया है C), हालांकि आपको failed to create symbolic linkपहले से मौजूद सिम्लिंक के लिए त्रुटियां मिलेंगी , और यह भ्रमित हो सकता है।
आप शायद उस निर्देशिका का नाम नहीं देना चाहते जो पहले से मौजूद है और जिसमें असंबंधित फ़ाइलें (जैसे आपके घर की निर्देशिका) शामिल हैं make-symlinks। यदि आप करते हैं, तो आप इसमें बनाए जाने वाले सिम्बलिंक और सबफ़ोल्डर्स के पूरे समूह की अपेक्षा कर सकते हैं। आप शायद एक नई निर्देशिका का उपयोग करना चाहते हैं - या जो अभी तक मौजूद नहीं है - के लिए make-symlinks।
शॉटवेल में नए बनाए गए सिम्लिंक ट्री को आयात करें।
आपके द्वारा चलाए जाने के बाद make-symlinks, इस उत्तर के पहले भाग में दिए गए तरीकों में से किसी एक का उपयोग करके आप उस निर्देशिका को शॉटवेल में आयात करें ( "शॉटवेल में चित्र का एक फ़ोल्डर खोलना (सबफ़ोल्डर्स को शामिल करना))" । उदाहरण के लिए, आप शॉटवेल खोल सकते हैं और फ़ोल्डर को अंदर खींच सकते हैं।
चूंकि फ़ोल्डर में सभी प्रविष्टियां या तो .cr2फाइलों या निर्देशिकाओं के लिए प्रतीकात्मक लिंक हैं जो उन्हें समाहित करती हैं, कोई अन्य फ़ाइल प्रकारों के साथ, शॉटवेल को अन्य फ़ाइलों में से कोई भी नहीं देखना चाहिए।