कुछ फ़ाइलों को उनके मूल निर्देशिका में कैसे स्थानांतरित करें?


13

मैं सभी एमपी को खींचना चाहता हूं जो कि गलती से इसमें से एक फ्लैक फ़ोल्डर में डाल दिया गया है, उनके मूल फ़ोल्डर में।

इससे कोई फर्क नहीं पड़ता कि फ़ोल्डर्स कितने गहरे हैं, मैं बस मेलिंग फ़ाइलों को एक निर्देशिका में स्थानांतरित करना चाहता हूं।

यहां बताया गया है कि मैं अपनी फ़ाइलों का चयन कैसे करता हूं:

find . -path "*/flac/*" -name '*.mp3'

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

जवाबों:


24

प्रयत्न:

find . -path "*/flac/*" -name '*.mp3' -execdir mv -t ../ {} +

यह काम किस प्रकार करता है

  1. find .

    वर्तमान निर्देशिका पर काम करने वाले एक कमांड को शुरू करें।

  2. -path "*/flac/*"

    flacउनके पथ वाली केवल फ़ाइलों का चयन करें

  3. -name '*.mp3'

    एक्सटेंशन वाली फाइलें ही चुनें .mp3

  4. -execdir mv -t ../ {} +

    किसी भी फाइल के mvलिए डायरेक्टरी उस डायरेक्टरी से चलती है जो फाइल में है और फाइल को पैरेंट डायरेक्टरी में ले जाते हैं।

    इस विशेष कार्य को आसान बनाने के अलावा, यह विकल्प -execdirपारंपरिक -execविकल्प की तुलना में अधिक सुरक्षित भी है ।

सरलीकरण

find . -path "*/flac/*.mp3" -execdir mv -t ../ {} +

1
अच्छा! मुझे जैसा चाहिए वैसा ही करता है।
मार्सेल

अनुष्ठान के लिए एक विकल्प + है; ?
रकंडबोमेन

@ Johnn1024 यह मानते हुए कि flacमार्ग में समान के साथ कोई नेस्टेड निर्देशिका नहीं है , */flac/flac/x.mp3अन्यथा x.mp3फ़ाइल दो स्तर ऊपर ले जाएगी।
α atsнιη

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.