মনে রাখবেন আপনি ডেলিয়ান এবং ডেরিভেটিভস (উবুন্টু, পুদিনা,…) দ্বারা বিতরণকৃত পার্ল স্ক্রিপ্টটিrename
ব্যবহার করছেন । অন্যান্য লিনাক্স ডিস্ট্রিবিউশনগুলি সম্পূর্ণ পৃথক, এবং যথেষ্ট কম কার্যকর, জাহাজটি ডাকা হয় rename
।
y/A-Z/a-z/
সীমার মধ্যে প্রতিটি অক্ষর অনুবাদ A
মাধ্যমে Z
ব্যাপ্তিতে সংশ্লিষ্ট চরিত্র মধ্যে a
দিয়ে z
সংশ্লিষ্ট ছোট হাতের অক্ষর থেকে অর্থাত হওয়া ASCII বড়হাতের অক্ষর। বিপরীত অনুবাদ সম্পাদন করতে, ব্যবহার করুন y/a-z/A-Z/
। আরেকটি উপায় একই কমান্ড লিখতে rename '$_ = uc($_)' *
- uc
হয় তোমার দর্শন লগ করা pper গ ASE ফাংশন, এবং rename
কমান্ড তৈরি রূপান্তর উপর ভিত্তি করে ফাইল renames $_
পরিবর্তনশীল।
rename '…' *
কেবলমাত্র বর্তমান ডিরেক্টরিতে ফাইলগুলির নাম পরিবর্তন করে, কারণ এটি *
মিলে যায়। ডট ফাইলগুলি (ফাইলগুলির নাম যার সাথে শুরু হয় .
)ও এড়িয়ে যায়।
আপনি যদি বর্তমান ডিরেক্টরিতে এবং উপ-ডিরেক্টরিতে পুনরাবৃত্তভাবে ফাইলগুলির নাম পরিবর্তন করতে চান তবে আপনি বর্তমান ডিরেক্টরিটি পুনরাবৃত্তভাবে অনুসরণ করতে find
আদেশটি ব্যবহার করতে পারেন । এখানে একটি অসুবিধা রয়েছে: আপনি যদি কল করেন তবে rename
এটি ডিরেক্টরি এবং বেস নাম অংশ উভয়টিরই নাম পরিবর্তন করে। যদি আপনি rename
কোনও ডিরেক্টরিতে এটি পুনরুক্ত করার আগে কল করেন ( find -exec rename … {} \;
), তখন find
এটি বিভ্রান্ত হয়ে পড়ে কারণ এটি একটি ডিরেক্টরি খুঁজে পেয়েছে তবে সেই ডিরেক্টরিটি এতে প্রবেশ করার চেষ্টা করার পরে আর উপস্থিত থাকবে না। আপনি find
ডিরেক্টরিটি অভিনয় করার আগে কোনও ডিরেক্টরিকে অতিক্রম করতে বলার মাধ্যমে এটিকে ঘিরে কাজ করতে পারেন , তবে তারপরে আপনি নাম পরিবর্তন foo/bar
করার চেষ্টা করেছেন FOO/BAR
তবে ডিরেক্টরিটি FOO
বিদ্যমান নেই।
এই অসুবিধাটি এড়ানোর একটি সহজ উপায় হ'ল নামকরণের আদেশটি কেবল পথের ভিত্তির নাম অংশে কাজ করা। নিয়মিত এক্সপ্রেশনটি ([^/]*\Z)
পাথের চূড়ান্ত অংশের সাথে মেলে যা একটি নেই /
।
find . -depth -exec rename 's!([^/]*\Z)!uc($1)!e' {} +
শেল জেডএস পুনর্নামকরণের জন্য আরও সুবিধাজনক বৈশিষ্ট্য সরবরাহ করে - পার্লের চেয়ে আরও ক্রিপ্টিক, তবে রুদ্ধ এবং রচনা করা প্রায়শই সহজ।
ফাংশন zmv
নিদর্শনগুলির উপর ভিত্তি করে ফাইলগুলির নাম পরিবর্তন করে। autoload -U zmv
এটি সক্রিয় করতে একবার চালান (আপনার এই লাইনটি রাখুন .zshrc
)।
zmv
(প্রতিস্থাপনের ধরণ) এর প্রথম যুক্তিতে আপনি zsh এর শক্তিশালী ওয়াইল্ডকার্ড নিদর্শনগুলি ব্যবহার করতে পারেন । zmv
(প্রতিস্থাপন পাঠ্য) এর দ্বিতীয় যুক্তিতে আপনি ইতিহাসের সংশোধকগুলি সহ এর প্যারামিটার সম্প্রসারণ বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন ।
zmv -w '**/*' '$1$2:u'
ব্যাখ্যা:
-w
- প্রতিটি ওয়াইল্ডকার্ড প্যাটার্নে স্বয়ংক্রিয়ভাবে সংখ্যার ভেরিয়েবল নির্ধারণ করুন
**/*
- উপ-ডিরেক্টরিতে সমস্ত ফাইল পুনরাবৃত্তভাবে ( **/
0, 1 বা উপ-ডিরেক্টরিগুলির আরও স্তরের সাথে মেলে)
$1
- প্রথম সংখ্যার ভেরিয়েবল, এখানে প্রতিটি পাথের ডিরেক্টরি অংশের সাথে মিল রয়েছে
$2:u
- দ্বিতীয় সংখ্যার ভেরিয়েবল, এখানে প্রতিটি পাথের বেস নামের অংশের সাথে :u
মানটি বড় হাতের সাথে রূপান্তর করার পরিবর্তনের সাথে মিলছে
একটি যুক্ত বোনাস হিসাবে, এটি পরিবেষ্টিত লোকেল সেটিংসকে সম্মান করে।
আপনি যে zmv
কমান্ডটি লিখেছিলেন সে সম্পর্কে আপনি যদি নিশ্চিত না হন তবে আপনি আদেশটি -n
কী করবে এবং কিছু পরিবর্তন না করে তা মুদ্রণের বিকল্পটি পাস করতে পারেন । আউটপুটটি পরীক্ষা করে দেখুন এবং এটি যদি আপনি যা চান তা করে, -n
আসলে কাজ না করে কমান্ডটি আবার চালান ।
rename 'y/a-z/A-Z/' *
যা চান তা পেয়ে যাবেন। আপনি যেখানে এটি পরীক্ষা করছেন সেদিকে যত্নশীল।