मैं इस जवाब देने की कोशिश करेंगे कहा जा सकता है, लेकिन यह नहीं हो सकता है इष्टतम समाधान हो, क्योंकि ऐसे कई उपकरण हैं जिनका उपयोग इस के लिए किया जा सकता है।
इस समस्या को हल करने का मेरा तरीका एक फ़ंक्शन लिखना होगा और फिर निर्देशिका/उपनिर्देशिका में प्रत्येक फ़ाइल को यह फ़ंक्शन लागू करना होगा। यह मानते हुए कि आपके पास एकाधिक कोर/प्रोसेसर हैं और यह कि आपका फ़ंक्शन केवल नाम बदलने और फ़ाइलों की प्रतिलिपि बनाने से अधिक CPU उपभोग करने वाला होगा, आप कार्य को समानांतर भी करेंगे।
बैश स्क्रिप्ट इस प्रकार दिखाई देगा:
#! /bin/bash
n=1
CopyAndRename() {
NEWNAME=$n.xx
cp "$i" /newdir/$NEWNAME
n=$[$n+1]
}
IFS=$'\n'
LIST=`find /dir -type f`
for i in $LIST; do
CopyAndRename $i
done
यह भी व्हाइटस्पेस और अन्य विशेष वर्ण के साथ फ़ाइल नामों को संभाल चाहिए। साथ में चलाना के लिए आप एक कार्यक्रम prll इस्तेमाल कर सकते हैं और फिर
prll CopyAndRename $LIST
साथ पाश के लिए जगह ले लेकिन यह वास्तव में नाम और नकल के लिए आवश्यक नहीं है।
धन्यवाद, बजाय num = संख्या + 1 का उपयोग का उपयोग करने के लिए मैं num = $ था ((संख्या +1))। –
यह समाधान सभी फ़ाइल नामों को जिस तरह से होना चाहिए उसे संभाल नहीं करता है। अगर किसी फ़ाइल में कोई स्थान या समान है, तो यह विफल हो जाता है। – glglgl
'num = $ ((num + 1)) के बजाय, आप बस' ((num ++)) 'कर सकते हैं। – norcalli