আমার উদাহরণস্বরূপ TREE.wav, ONE.WAV রয়েছে। আমি গাছটির নাম পরিবর্তন করতে চাই। Wav, one.wav। আমি কিভাবে সমস্ত ফাইলের ছোট হাতের নাম পরিবর্তন করব?
আমার উদাহরণস্বরূপ TREE.wav, ONE.WAV রয়েছে। আমি গাছটির নাম পরিবর্তন করতে চাই। Wav, one.wav। আমি কিভাবে সমস্ত ফাইলের ছোট হাতের নাম পরিবর্তন করব?
উত্তর:
আপনি যদি টার্মিনালের সাথে স্বাচ্ছন্দ্য বোধ করেন:
cd
এবং তারপরে উইন্ডোতে নামকরণের জন্য ফাইলযুক্ত ফোল্ডারটিকে টেনে আনুন dropls
এবং এন্টার টিপুন।এই কোডটি আটকান এবং এন্টার টিপুন:
for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
ls
এবং আবার এন্টার চাপুন।(কয়েকটি সমাধানের জন্য টুইটারে @ বাভরিয়াসকে ধন্যবাদ, এবং কেস-সংবেদনশীল ফাইল সিস্টেমগুলিতে এই নিরাপদ করার জন্য নীচে জন হুইটলিকে ধন্যবাদ))
foo.txt
এবং থাকে FOO.TXT
তবে এটি তাদের মধ্যে একটিকে ক্লোবার করতে পারে।
mv "$f" "${f,,}"
declare -l g=$f; mv "$f" "$g"
for f in *; do mv "$f" "$f.tmp"; mv "$f.tmp" "`echo $f | tr "[:upper:]" "[:lower:]"`"; done
যেমনটি জিজ্ঞাসা করা প্রশ্নটি সাধারণ, এবং এটিও গুরুত্বপূর্ণ, তাই আমি আরও সাধারণ উত্তর সরবরাহ করতে চাই:
সর্বাধিক সহজ কেস (বেশিরভাগ সময় নিরাপদ এবং ম্যাক ওএস এক্সে, তবে পড়ুন):
for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done
আপনাকে ফাইলের নামগুলিতে (যে কোনও ওএস) ফাঁকা স্থানও পরিচালনা করতে হবে:
IFS=$'\n' ; for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; mv "$i" "$j" ; done
আপনার কেস-সংবেদনশীল ফাইল সিস্টেমের ক্ষেত্রে পৃথকভাবে ফাইলের নামগুলি নিরাপদে পরিচালনা করতে হবে এবং লক্ষ্য (যেমন লিনাক্স) ওভাররাইট না করে:
for i in * ; do j=$(tr '[:upper:]' '[:lower:]' <<< "$i") ; [ -e "$j" ] && continue ; mv "$i" "$j" ; done
ম্যাক ওএস এক্স সম্পর্কে দ্রষ্টব্য:
ম্যাকের ফাইল সিস্টেমটি কেস-সংবেদনশীল, কেস-সংরক্ষণ করা।
তবে গ্রহণযোগ্য উত্তর এবং মন্তব্যে প্রস্তাবিত অস্থায়ী ফাইল তৈরি করার দরকার নেই, কারণ কেবলমাত্র ক্ষেত্রে পৃথক দুটি ফাইলের নাম প্রথম স্থানে থাকতে পারে না, রেফ ।
এটি দেখানোর জন্য:
$ mkdir test
$ cd test
$ touch X x
$ ls -l
total 0
-rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 X
$ mv X x
$ ls -l
total 0
-rw-r--r-- 1 alexharvey wheel 0 26 Sep 20:20 x