आप इस कमांड का उपयोग कर सकते हैं:
for i in *; do
read -p "$i -> " newname
if [[ ! -z "$newname" ]]; then
mv -v -- "$i" "$newname"
fi
done
यह आपको प्रत्येक फ़ाइल के लिए एक नया नाम और for i in *
वर्तमान निर्देशिका में हर निर्देशिका ( ) के लिए संकेत देगा । नया नाम पढ़ने को मिलता है $newname
। यदि आप Enterएक नया नाम लिखे बिना हिट करते हैं , तो कुछ भी नहीं किया जाता है ( -z $newname
चेक, यदि $newname
खाली है ( z ero); !
तार्किक है not
), अन्यथा mv
फ़ाइल का नाम बदलने के लिए उपयोग किया जाता है।
यदि आप फ़ाइल नाम को केवल थोड़ा बदलना चाहते हैं, तो यह अधिक कुशल है यदि आप इसे संपादित कर सकते हैं, पुराने फ़ाइल नाम से शुरू कर सकते हैं , जैसा कि @grawity द्वारा सुझाया गया है:
for i in *; do
read -p "$i -> " -e -i "$i" newname
if [[ ! -z "$newname" ]]; then
mv -v -- "$i" "$newname"
fi
done
मैंने इसे रिक्त स्थान और ब्रेसिज़ वाले फ़ाइलनाम के साथ परीक्षण किया, हालांकि कृपया इसे अपने जोखिम पर उपयोग करें (और पहले की मूल फ़ाइलों का बैकअप बनाएं)।