Mac OS X की कमांड लाइन से नेस्टेड डायरेक्टरी & फ़ाइल पदानुक्रम को समतल करें

Anonim

क्या आपको कभी डायरेक्टरी स्ट्रक्चर को समतल करने की जरूरत पड़ी है, डायरेक्टरी चाइल्ड फोल्डर से सभी फाइल कंटेंट को एक ही फोल्डर में ले जाना है? जबकि आप इसे मैक ओएस एक्स या लिनक्स के फाइल सिस्टम से फ़ाइलों और फ़ोल्डरों के चारों ओर ले जाकर मैन्युअल रूप से कर सकते हैं, कमांड लाइन पर जाने का एक तेज़ विकल्प है। हो सकता है कि एक बिंदु पर आपने निर्देशिकाओं का एक नेस्टेड पदानुक्रम बनाया हो जिसे अब आपको उन नेस्टेड फ़ोल्डरों से सभी फाइलों को हटाकर एक ही निर्देशिका में वापस लाने की आवश्यकता है, या हो सकता है कि आप किसी निर्देशिका संरचना को सरल बनाना चाह रहे हों, चाहे जो भी कारण हो, यह ट्रिक काफी अच्छा काम करती है।

फ़ाइलों और निर्देशिका संरचनाओं को समतल करने के लिए कमांड लाइन का उपयोग करना स्पष्ट रूप से उन्नत उपयोगकर्ताओं के लिए सबसे अच्छा आरक्षित है जो सामान्य रूप से टर्मिनल का उपयोग करने में सहज हैं, यदि यह आपको वर्णित नहीं करता है, तो इसे Finder के माध्यम से मैन्युअल रूप से करने पर विचार करें , या फ़ाइल सिस्टम गतिविधियों के समान स्वचालन को पूरा करने के लिए Mac Automator ऐप का उपयोग करना। हालांकि, हम यहां कमांड लाइन से डायरेक्ट्री को समतल करने पर ध्यान केंद्रित कर रहे हैं।

नेस्टेड फ़ाइल निर्देशिका को समतल करने का उदाहरण

बेहतर ढंग से समझने के लिए कि हम क्या हासिल करने की कोशिश कर रहे हैं, आइए एक काल्पनिक निर्देशिका संरचना का उदाहरण लेते हैं जिसे TestDirectory कहा जाता है जो एक उपयोगकर्ता होम फ़ोल्डर में स्थित है। इस उदाहरण में, TestDirectory में SubDirectory1, SubDirectory2, SubDirectory3, आदि जैसे सबफ़ोल्डर शामिल हैं, जिनमें से प्रत्येक संबंधित फ़ोल्डर में फ़ाइलें हैं। हम यहां जो करना चाहते हैं, वह निर्देशिका संरचना को समतल करना है, सबडायरेक्टरी (एक्स) से सभी फाइलों को मूल निर्देशिका "टेस्टडायरेक्टरी" में ले जाना है।के साथ पुनरावर्ती रूप से दिखाई गई प्रारंभिक निर्देशिका और सामग्री कुछ इस तरह दिख सकती है:

$ ढूंढें ~/TestDirectory/ -type f ~/TestDirectory/rooty.jpg ~/TestDirectory/SampleDirectory1/beta-tool-preview.jpg ~/TestDirectory/SampleDirectory1 /alphabeta-tool.jpg ~/TestDirectory/SampleDirectory2/test-tools.jpg ~/TestDirectory/SampleDirectory3/test-png.jpg ~/TestDirectory/SampleDirectory3/test1.jpg ~/TestDirectory/SampleDirectory3/test2.jpg

इस निर्देशिका और उपनिर्देशिका सामग्री को वापस TestDirectory फ़ोल्डर में समतल करने के लिए, आप निम्न कमांड स्ट्रिंग का उपयोग करेंगे:

फाइंड टारगेट डायरेक्टरी/ -माइंडडेप्थ 2 -टाइप f -exec mv -i '{}' टारगेट डायरेक्टरी/ ';'

निर्देशिका की सामग्री को चपटा करने के बाद, सूचीबद्ध होने पर इसे इस तरह दिखना चाहिए:

~/TestDirectory/rooty.jpg ~/TestDirectory/beta-tool-preview.jpg ~/TestDirectory/alphabeta-tool.jpg ~/TestDirectory/test-tools .jpg ~/TestDirectory/test-png.jpg ~/TestDirectory/test1.jpg ~/TestDirectory/test2.jpg

ध्यान दें उपनिर्देशिका अभी भी मौजूद रहेंगी, वे बस खाली रहेंगी। सही बात? यदि नहीं, या यदि वह प्रदर्शित नहीं करता है कि आप क्या हासिल करना चाहते हैं, तो आप शायद किसी निर्देशिका को समतल नहीं करना चाहते हैं, हो सकता है कि आप कहीं और एक जटिल प्रतिलिपि करने के लिए विलय या इसी तरह का उपयोग करना चाह रहे हों।

निर्देशिका संरचना को समतल करना और कमांड लाइन के साथ नेस्टेड फ़ाइल पदानुक्रम

आगे बढ़ने के लिए तैयार हैं? एक निर्देशिका संरचना को समतल करने के लिए और लक्ष्य निर्देशिका के आधार पर उपनिर्देशिकाओं से सभी फाइलों को स्थानांतरित करने के लिए हम जिस कमांड स्ट्रिंग का उपयोग करने जा रहे हैं वह इस प्रकार है:

ढूंढें -दिमाग की गहराई 2 -टाइप f -exec mv -i '{}' ';'

फ्लैट करने के लिए अपनी पसंद की निर्देशिका से बदलें, जैसा ऊपर दिए गए उदाहरण में दिखाया गया है।

हाँ, निर्देशिका कमांड स्ट्रिंग में दो बार दिखाई देती है, पहली बार निर्देशिका की उपनिर्देशिकाओं को समतल करने के लिए खोजा जा रहा है, और दूसरी बार मिली वस्तुओं के लिए गंतव्य के रूप में।

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

जैसा कि पहले उल्लेख किया गया है, आप OS X के Finder में भी ऐसा कर सकते हैं, या कम से कम Finder में फ़ाइल और फ़ोल्डर में बदलाव देखें। विकल्प + सूची दृश्य में छोटे तीरों पर क्लिक करने से सभी उपनिर्देशिकाएं खुल जाती हैं, फ़ोल्डर पदानुक्रम इस तरह दिखाता है:

विभिन्न प्रकार के बैश और zsh विकल्पों के साथ खिलवाड़ करने के बाद, इस आसान ट्रिक को StackExcange पर एक टिप्पणीकार द्वारा छोड़ दिया गया और यह सबसे आसान और सबसे संगत तरीका बन गया। यदि आप एक नेस्टेड निर्देशिका को समतल करने के बेहतर तरीके के बारे में जानते हैं, तो हमें टिप्पणियों में बताएं!

Mac OS X की कमांड लाइन से नेस्टेड डायरेक्टरी & फ़ाइल पदानुक्रम को समतल करें