मैक ओएस एक्स की कमांड लाइन से एक नेस्टेड निर्देशिका और फ़ाइल पदानुक्रम को फ़्लैट करें

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


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

एक नेस्टेड फ़ाइल निर्देशिका flattening का उदाहरण

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

$ find ~/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

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

find TargetDirectory/ -mindepth 2 -type f -exec mv -i '{}' TargetDirectory/ ';'

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

~/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

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

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

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

find [DIRECTORY] -mindepth 2 -type f -exec mv -i '{}' [DIRECTORY] ';'

ऊपर दिए गए उदाहरण में दिखाए गए अनुसार, अपनी पसंद की निर्देशिका के साथ [DIRECTORY] को प्रतिस्थापित करें।

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

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

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

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