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

स्रोत और गंतव्य को एक ही ड्राइव पर मान लेने से, डिफ़ॉल्ट रूप से चालें चलती हैं। यदि आप इसके बजाय कॉपी करना चाहते हैं, तो आप Ctrlकुंजी दबाए रखेंगे।

सिद्धांत रूप में, यह ठीक गलतियों के लिए आसान जब इस पद्धति का उपयोग है, क्योंकि (काजा सहित) समर्थन सबसे फ़ाइल ब्राउज़रों Ctrl+ Zबैच कार्यों सहित पूर्ववत हाल कार्रवाई, करने के लिए। हालाँकि, मैंने इसके साथ किस्मत को मिला दिया है। कभी-कभी फाइलें गलत फ़ोल्डर में वापस चली जाती हैं।
अच्छी खबर यह है कि आप ज्यादातर टेक्स्ट दस्तावेजों के साथ काम करते दिखाई देते हैं, जो छोटे होते हैं, इसलिए आप tarबिना किसी परेशानी के पहले अतिरिक्त बैकअप बना सकते हैं । मैं सुझाव देता हूं कि आप किस विधि का उपयोग करते हैं।
रास्ता 2 : कार्रवाई के findसाथ कमांड-ok
findफ़ाइलों का पता लगाना -execऔर -execdirकार्यों के साथ एक मनमाना बाहरी कमांड के लिए उनके मार्ग को पास करना आम बात है । लेकिन findयह भी है -okऔर -okdirहै कि शीघ्र हर बार इससे पहले कि वे एक आदेश चला। यदि आप वास्तव में प्रत्येक फ़ाइल के बारे में टर्मिनल में संकेत देना चाहते हैं, तो मुझे लगता है कि यह जाने का रास्ता है।
जब जैसा ऊपर दिखाया गया है, वैसा ही प्रभाव उत्पन्न करने के लिए किया जाता है:
ek@Gnar:~$ find Texts -xtype f -ok mv -t 'Glorious Destination Folder' {} \;
< mv ... Texts/Robert Frost/New Hampshire.pdf > ? y
< mv ... Texts/Robert Frost/In The Clearing.pdf > ? n
< mv ... Texts/Helen Keller/The Story of My Life.pdf > ? y
< mv ... Texts/Saki/The Short Stories of Saki.pdf > ? y
< mv ... Texts/Jane Austen/Sense and Sensibility.pdf > ? n
< mv ... Texts/Jane Austen/Pride and Prejudice.pdf > ? y
< mv ... Texts/Richard Connell/The Stolen Crime.pdf > ? n
< mv ... Texts/Richard Connell/The Most Dangerous Game.txt > ? y
< mv ... Texts/Mary Wollstonecraft Shelley/Mathilda.epub > ? n
< mv ... Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf > ? y
< mv ... Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf > ? n
< mv ... Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm > ? y
Textsस्रोत निर्देशिका के साथ बदलें (जो कि हो सकता है .कि आप cd'डी' हो) और Glorious Destination Folderवास्तविक गंतव्य निर्देशिका के साथ।
यह प्रति फ़ाइल एक कमांड चलाता है; विपरीत -execऔर -execdir, -okऔर -okdirसमर्थन नहीं करते +के स्थान पर \;एक आदेश के एक ही मंगलाचरण में एक से अधिक मिली पथ पारित करने के लिए। नतीजतन, आप के रूप का उपयोग करने की जरूरत नहीं -t destहै mv। मैं वैसे भी ऐसा करने का सुझाव देता हूं, हालांकि, दोनों सामान्य रूप से findऔर विशेष रूप से इस स्थिति में इसलिए संकेत उन आदेशों की तरह अधिक दिखते हैं जिनके बारे में वे संकेत दे रहे हैं।
जैसा कि कमांड में लिखा गया है, अगर findएक प्रतीकात्मक लिंक का सामना करता है जो अंततः एक नियमित फ़ाइल की ओर इशारा करता है, तो इसे (लिंक, लक्ष्य नहीं) को अनदेखा करने के बजाय स्थानांतरित किया जाता है। यदि आप वास्तव में सिर्फ एक नियमित फाइल संचालित करना चाहते हैं, तो -type fइसके बजाय उपयोग करें -xtype f।
आप इसे एक scriptसत्र में करना चाह सकते हैं ताकि आप यह पता लगा सकें कि गलती होने पर क्या हुआ। लेकिन फिर, कोई कारण नहीं एक बैकअप के लिए।
रास्ता 3: एक प्रकट उत्पन्न करें और इसे संपादित करें
कम से कम इतनी देर तक जब फ़ाइलों में उनके नाम की नई-नई पंक्तियाँ नहीं हैं, तो आप एक साधारण findकमांड का उपयोग करके एक मेनिफ़ेस्ट --a फ़ाइल बनाने के लिए शुरू कर सकते हैं जो उन फ़ाइलों के नामों को सूचीबद्ध करता है जिन्हें आप (इस मामले में संभवतः) रुचि रखते हैं :
find Texts -xtype f >manifest
manifestउस फ़ाइल के लिए जो भी नाम आपको पसंद है उसे बदल दें जो विचाराधीन फाइलों को सूचीबद्ध करता है (और तदनुसार शेष दिशाओं को समायोजित करें)।
ऊपर के रूप में, Textsअपने वास्तविक स्रोत निर्देशिका के साथ बदलें , जो हो सकता है .यदि आप इसे cdकरने के लिए है। हालाँकि, यदि Textsकोई सापेक्ष पथ है (यदि यह शामिल है .) तो आपको बाद में उसी स्थान पर होना सुनिश्चित करना चाहिए जब आप वास्तव में चालें करते हैं।
उस findकमांड को चलाने के बाद , manifestएक टेक्स्ट एडिटर में खोलें । यह हो सकता है nano, vim, emacs, gedit, pluma, आदि संपादक में, बाहर टिप्पणी लाइनों नाम फ़ाइलें है कि आप नहीं है एक रखकर ले जाना चाहते हैं #उन्हें की शुरुआत में। कुछ संपादकों ने उन पंक्तियों को अलग-अलग तरीके से उजागर किया होगा, जबकि यह आपकी फ़ाइल को किसी भी प्रारूप के होने की पहचान नहीं करता है, जो यह जानता है कि इसमें टिप्पणियां हैं। अधिकांश, हालांकि, और वास्तविक कारण मैं इसे इस तरह से करने का सुझाव नहीं देता हूं, यह है कि आप, एक मानव के रूप में, कॉन्फ़िगरेशन फ़ाइलों में (और शायद स्रोत कोड में) लाइनों का अनुभव करने की संभावना रखते हैं। मुझे लगता है कि यह अधिक सहज, और कम त्रुटि वाला है, इससे आप उन पंक्तियों को चिह्नित करना चाहेंगे जिन्हें आप स्थानांतरित करना चाहते हैं।
बेशक, आप इसके बजाय उन फ़ाइलों के लिए लाइनें हटा सकते हैं जिन्हें आप स्थानांतरित नहीं करना चाहते हैं। उन्हें टिप्पणी करने का लाभ यह है कि यह बाद में स्पष्ट हो जाएगा कि आपने क्या किया।
मेरे उदाहरण में, यह वही है जो फ़ाइल की सामग्री ऐसी दिखती थी जैसे मैंने उसे संपादित किया था:
Texts/Robert Frost/New Hampshire.pdf
# Texts/Robert Frost/In The Clearing.pdf
Texts/Helen Keller/The Story of My Life.pdf
Texts/Saki/The Short Stories of Saki.pdf
# Texts/Jane Austen/Sense and Sensibility.pdf
Texts/Jane Austen/Pride and Prejudice.pdf
# Texts/Richard Connell/The Stolen Crime.pdf
Texts/Richard Connell/The Most Dangerous Game.txt
# Texts/Mary Wollstonecraft Shelley/Mathilda.epub
Texts/Mary Wollstonecraft Shelley/Frankenstein: Or, The Modern Prometheus.pdf
# Texts/W. E. B. Du Bois/The Souls of Black Folk.pdf
Texts/W. E. B. Du Bois/Darkwater: Voices from within the Veil.htm
फिर आप टिप्पणी लाइनों को फ़िल्टर कर सकते हैं grepऔर xargsउन्हें पास करने के लिए परिणाम को पाइप कर सकते हैं mv:
grep -Pv '^\s*#' manifest | xargs -d '\n' mv -t 'Glorious Destination Folder'
ऊपर के रूप Glorious Destination Folderमें, वास्तविक गंतव्य के नाम से प्रतिस्थापित करें। बस; आपकी फ़ाइलें स्थानांतरित हो गई हैं। यदि आप पसंद करते हैं, तो कमांड को देखने के लिए echoपहले लिख सकते mvहैं।
जिस तरह से कमांड काम करता है वह है:
grepआदेश आउटपुट लाइनों से manifestकि नहीं है ( -v) (शुरू ^वैकल्पिक (साथ) *) खाली स्थान के ( \s) एक शाब्दिक द्वारा पीछा #चरित्र। -Pध्वज नियमित अभिव्यक्ति की बोली के रूप में PCRE चयन (जो सक्षम बनाता है \sजो मैं पारंपरिक की तुलना में अधिक पठनीय पर विचार [[:space:]])।
xargsआदेश अपने इनपुट (जिनमें से उत्पादन होता है बांटता grepन्यू लाइन-समाप्त क्षेत्र (में) -d '\n',) तो (समाप्त न्यू लाइन के बिना) प्रत्येक क्षेत्र में चिपकाता आदेश के अंत में एक अलग तर्क के रूप में mv -t 'Glorious Destination Folder'है, जो इसे चलाता है।
-okIMHO सबसे अच्छा जवाब