तरीका 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'
है, जो इसे चलाता है।
-ok
IMHO सबसे अच्छा जवाब