ফাইলের সাথে পার্স করবেন না sed
! এর আউটপুট echo "$file"
নির্ভরযোগ্য নাও হতে পারে।
ব্যবহার rename
। 17.10 এ আপনাকে প্রথমে এটি ইনস্টল করতে হবে
sudo apt install rename
তারপর:
rename -n -- 's/[^-A-Za-z0-9_ .]/_/g' *
মন্তব্য
-n
আসলে ফাইলগুলির নাম পরিবর্তন করতে পরীক্ষার পরে অপসারণ করুন
--
কোনও ফাইল দিয়ে শুরু হওয়ার সাথে সাথে বিকল্পগুলির বিকল্প -
[^-A-Za-z0-9_ .]
যে অক্ষরগুলি আমরা প্রতিস্থাপন করতে চাই না - -
প্রথমে বা শেষ রাখি যাতে এটি কোনও পরিসীমা নির্দেশ করতে পারে না (এটি এই অবস্থানগুলিতে আক্ষরিক অর্থে বিবেচনা করা হয়)।
- স্পেস ক্লাসে অন্তর্ভুক্ত করা যেতে পারে
.
আক্ষরিকভাবে চিকিত্সা করা হয় (অন্যান্য রেজেক্স প্রসঙ্গে এটি কোনও চরিত্রের জন্য দাঁড়িয়ে এবং এড়াতে হবে)।
এটি এতে কাজ করে sed
:
$ echo 'trip: hill' | sed 's/[^-A-Za-z0-9 _.]/_/g'
trip_ hill
আমি যদি আপনার সংস্করণে শেষ পর্যন্ত একটি স্থান যুক্ত করি তবে আমি একটি ত্রুটি পেয়েছি:
$ echo 'trip: hill' | sed -e 's/[^A-Za-z0-9._- ]/_/g'
sed: -e expression #1, char 22: Invalid range end
তবে -
শেষে, এটি কাজ করে:
$ echo 'trip: hill' | sed -e 's/[^A-Za-z0-9._ -]/_/g'
trip_ hill
আপনি সম্ভবত স্থান যুক্ত করার পরে সম্ভবত হাইফেনের অবস্থানটি আপনার সমস্যার কারণ হতে পারে। কিন্তু ফাইল নাম পার্স না করার পরামর্শই দাঁড়িয়ে!