लिनक्स बल्क नाम और फाइल के नाम के अंत में वर्ष के आसपास कोष्ठक लगाने के लिए मीडिया फ़ाइलों और निर्देशिकाओं का नाम बदलें


0

मेरे पास विभिन्न निर्देशिकाओं में होम वीडियो फ़ाइलों की संख्या है जो उस वर्ष को इंगित करने के लिए निर्देशिका नाम के अंत में एक वर्ष है जिसमें वीडियो फिल्माया गया था। यह उस निर्देशिका में फ़ाइल नाम के अंत में और विस्तार से पहले भी है। मैं वर्ष के आसपास कोष्ठक रखना चाहता हूं।

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

Videos/Xmas 2004 - Time To Go 2004

शामिल हैं:

Xmas 2004 - Time To To 2004.mp4  
Xmas 2004 - Time To Go 2004.txt  
Xmas 2004 - Time To Go 2004.readme  

मैं अपनी सभी मीडिया फ़ाइलों का नामकरण इस नामकरण प्रणाली के साथ करना चाहता हूं:

Videos/Xmas 2004 - Time To Go (2004)

शामिल

Xmas 2004 - Time To To (2004).mp4  
Xmas 2004 - Time To Go (2004).txt  
Xmas 2004 - Time To Go (2004).readme

मैं यह कैसे करु? मैं फ़ाइलों और निर्देशिकाओं को पाने के लिए "खोज" कमांड का उपयोग कर सकता हूं:

find /home/user/Videos/ -iname "* [1-2][0-9][0-9][0-9]"    # Find directories
find /home/user/Videos/ -iname "* [1-2][0-9][0-9][0-9].*"  # Find files

मैं सोच रहा हूं कि मैं "-exec {} \" का उपयोग कैसे कर सकता हूं? संरचना का नाम बदलने या mv कमांड (या sed या awk) का उपयोग करने के लिए या क्या मैं फ़ाइल नाम स्ट्रिंग में हेरफेर करने के लिए एक बैश स्क्रिप्ट लिखता हूं और इसे "-exec {} \" में डाल देता हूं;

जवाबों:


0

यह स्क्रिप्ट आवश्यक mvआदेशों को मुद्रित करेगा stdout। आपको उन्हें एक फ़ाइल में सहेजना चाहिए ( sh script > file) और उनका निरीक्षण करना चाहिए। यदि आप उन्हें निष्पादित करने के लिए सुरक्षित पाते हैं, तो आप फिर फ़ाइल ( sh file) में कमांड चला सकते हैं । या आप बदल सकते हैं printकरने के लिए systemस्क्रिप्ट अपने आप में।

find $1 -type f > /tmp/to_rename
find $1 -type d >> /tmp/to_rename
perl -lne '
    $re = qr/([12]\d\d\d)(\.\w*)?$/;
    if (/$re/) {
        $old = $_;
        s/$re/(\1)\2/;
        print("mv \"$old\" \"$_\"");
    }
' /tmp/to_rename

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