কোনও ফোল্ডারে সমস্ত ফাইলের সমস্ত ফাইল এক্সটেনশন দ্রুত পরিবর্তন করার কোনও উপায় আছে কি?


15

আমার কাছে .m4b অডিও বইয়ের একটি বড় ফোল্ডার রয়েছে যা তাদের বর্তমান ফর্ম্যাটটিতে আমার অ্যান্ড্রয়েড ফোনে খেলবে না। তবে তারা .m4a এ নতুন নামকরণ করা হলে তারা ঠিকঠাক কাজ করে

এমন কোনও দ্রুত পদ্ধতি বা টার্মিনাল কমান্ড রয়েছে যা ফোল্ডারে প্রতিটি .m4b ফাইলকে .m4a এ পুনরায় নামকরণ করতে পারে? ফাইলগুলির কোনও রূপান্তরকরণের দরকার নেই, কেবলমাত্র ফাইলের এক্সটেনশনের নামকরণ পুরোপুরি সূক্ষ্মভাবে কাজ করে।


2
এফওয়াইআই: renameএটি একটি পার্ল স্ক্রিপ্ট এবং নিয়মিত প্রকাশগুলি গ্রহণ করে। এর rename.ulঅংশ হিসাবে দেবিয়ান সিস্টেমগুলির একটি কমান্ড রয়েছে util-linux-ng package। যদি পার্ল ইনস্টল না হয় (ঠিক আছে, অত্যন্ত অসম্ভব;)) renameএটিও নয়।
রিঞ্জউইন্ড

উত্তর:


17

এটি আপনার জন্য কাজটি করবে।

rename 's/.m4b$/.m4a/' *.m4b

পরীক্ষার জন্য আপনি এই কমান্ডটি ব্যবহার করতে পারেন:

rename 's/.m4b$/.m4a/' *.m4b -vn

-v "ভার্বোজ" অর্থ এবং ফাইলগুলির নাম পরিবর্তন করা হলে এটিগুলির নাম আউটপুট দেবে।

-n এটি একটি পরীক্ষা চালাবে যেখানে এটি কোনও ফাইলের নাম পরিবর্তন করে না, তবে আপনাকে পুনরায় নামকরণ করা হবে এমন ফাইলগুলির একটি তালিকা প্রদর্শন করবে।


আমার চেয়ে অনেক ভাল উত্তর। আমি অলস হয়ে যাচ্ছিলাম এবং নিয়মিত এক্সপ্রেশনগুলি ব্যবহার না করার চেষ্টা করছিলাম ...
এডিম্পেওলফ

ধন্যবাদ, একটি ট্রিট কাজ করে। এই প্রচেষ্টার জন্য @ অ্যাডেম্পিউলফকেও ধন্যবাদ

10

ফাইলগুলির নাম পরিবর্তন করার খুব দ্রুত উপায়, যদি আপনার কেবল এটি করা দরকার এবং সেগুলি অন্য ফর্ম্যাটে রূপান্তর করার দরকার নেই, তা হল বাশের প্যারামিটার বিস্তৃতি ব্যবহার করা, যা বাশ উইকিতে খুব সুন্দরভাবে বিশদযুক্ত

এক্সটেনশানটি পরিবর্তন করার বিভিন্ন উপায় রয়েছে তবে আমি এখানে সাধারণ ${var/original/replacement}দৃষ্টান্তটি ব্যবহার করি :

for file in *.m4b; do mv -- "${file}" "${file/%m4b/m4a}"; done

কমান্ড দ্বারা কী পরিবর্তন হবে তা যদি আপনি দেখতে চান তবে echoআগে রাখুন mvএবং পরিবর্তনগুলি তালিকাভুক্ত হবে।

বলা বাহুল্য এই অনলাইনারটি অন্য ফাইলগুলির জন্যও সংশোধন করা যেতে পারে এবং আপনি ফাইল এক্সটেনশানগুলি সরাতে প্যারামিটার বিস্তৃতিও ব্যবহার করতে পারেন।


+1 এইভাবে @ বাশারত শিয়ালের উত্তর হিসাবে একই রকম কাজ করবে আপনার ব্যপারে যখন প্রচুর ফাইলের মিল থাকবে তখন এটি কাজ করবে *.m4b। অন্যথায় আপনি ত্রুটি আঘাত করা হবে argument list too long
মাদুর

এছাড়াও এটি দেখতে, ভার্বোস পতাকাটি যুক্ত করুন:for file in *.m4b; do mv -v -- "${file}" "${file/%m4b/m4a}"; done
পোড়ায়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.