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


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.