फ़ाइल नाम में पहले टोकन द्वारा मेल किए गए अन्य फ़ोल्डर से अन्य के साथ फ़ाइलों को बदलें


2

कहते हैं कि मेरे पास दो फ़ोल्डर हैं:

ls /A/
    01 - IncorrectName.flac
    02 - otherincorrect.flac

ls /B/
    01 - CorectName.flac
    02 - Othercorrect.flac

मैं फ़ाइलों को dir A से B में कैसे स्थानांतरित करूँगा, लेकिन dir B से फ़ाइल नाम का उपयोग कर रहा हूँ?

क्या मैं इसके साथ स्वचालित रूप से कर सकता हूं $ mv /A/01 - IncorrectName.flac /B/01 - CorrectName.flac?

सभी फ़ाइलनामों के पहले 5 अक्षर हमेशा "NN -" होते हैं

जवाबों:


4

मुझे यकीन नहीं है कि मैं समझ सकता हूं कि आप क्या चाहते हैं, लेकिन यह इस तरह से हो सकता है:

#! /bin/bash
for file in "$1"/[0-9][0-9]*.flac ; do
    newname="$2"${file#"$1"}
    newname=${newname:0:5+${#2}}
    mv "$file" "$newname"*
done

अद्यतन : कमांड लाइन तर्कों के साथ काम करना चाहिए। चाल स्ट्रिंग की लंबाई थी जो अब स्थिर नहीं थी, इसलिए ${#2}।


मैं निर्देशिका A में फ़ाइलों का नाम बदलने / स्थानांतरित करने के दौरान निर्देशिका B से मौजूदा फ़ाइल नाम का उपयोग करना चाहता हूं, फ़ाइल नाम के पहले 5 वर्णों के आधार पर A से B में नाम में एक फ़ाइल का मिलान करता हूं। यानी इन फ्लैक फाइलों का ट्रैक नंबर।
— अलसादेयर

बैश "खराब प्रतिस्थापन" की शिकायत करता है, मेरे फ़ोल्डर नामों में स्थान हैं, लेकिन उन्हें सिर्फ ए और बी में ले जाने से कोई प्रभाव नहीं पड़ा है, समस्या बनी हुई है।
— अलसद्दर

हाय टाइपो के साथ भी मुझे "खराब प्रतिस्थापन" मिलता है
— अलसादेयर

GNU बैश, संस्करण 4.1.5 (1) -release (i486-pc-linux-gnu)
— अलास्देयर

अजीब। क्या निर्देशिका में कोई अन्य फाइलें हैं? ऐसे मामले में, आपको *उदाहरण के बजाय कुछ सुरक्षित वाइल्डकार्ड का उपयोग करना चाहिए [0-9][0-9]*.flac।
— कोरोबा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.