প্রথমত, আমার বলা উচিত যে এটি করার সহজতম উপায় হ'ল প্রাক-নাম বা পুনরায় নাম কমান্ডগুলি ব্যবহার করা।
উবুন্টুতে, ওএসএক্স (হোমব্রিউ প্যাকেজ rename
, ম্যাকপোর্টস প্যাকেজ p5-file-rename
) বা পার্ল নাম (পূর্ব নাম) সহ অন্যান্য সিস্টেমে:
rename s/0000/000/ F0000*
অথবা ইউএস-লিনাক্স-এনজি থেকে নাম পরিবর্তন করা সিস্টেমগুলিতে যেমন আরএইচইএল:
rename 0000 000 F0000*
এটি সমমানের সেড কমান্ডের চেয়ে অনেক বেশি বোধগম্য।
তবে সেড কমান্ড বোঝার জন্য, সেড ম্যানপেজটি সহায়ক। যদি আপনি ম্যান সেড চালনা করেন এবং & এর জন্য অনুসন্ধান করেন (অনুসন্ধানের জন্য / কমান্ড ব্যবহার করে), আপনি এটি s / foo / বার / প্রতিস্থাপনে একটি বিশেষ চরিত্র পাবেন।
s/regexp/replacement/
Attempt to match regexp against the pattern space. If success‐
ful, replace that portion matched with replacement. The
replacement may contain the special character & to refer to that
portion of the pattern space which matched, and the special
escapes \1 through \9 to refer to the corresponding matching
sub-expressions in the regexp.
সুতরাং, \(.\)
প্রথম চরিত্রের সাথে মেলে যা রেফারেন্স করা যেতে পারে \1
। তারপরে .
পরবর্তী অক্ষরের সাথে মেলে যা সর্বদা 0 থাকে। তারপরে \(.*\)
বাকী ফাইলের সাথে মেলে, যা উল্লেখ করা যেতে পারে \2
।
প্রতিস্থাপনের স্ট্রিং এটি সমস্তকে একসাথে রাখে &
(মূল ফাইলের নাম) এবং \1\2
এটি ফাইলের প্রতিটি অংশ যা 2 য় অক্ষর ব্যতীত, যা 0 ছিল।
এটি করার একটি দুর্দান্ত ক্রিপ্টিক উপায়, আইএমএইচও। যদি কোনও কারণে পুনর্নবীকরণ কমান্ডটি উপলভ্য না থাকে এবং আপনি নামটি ব্যবহারের জন্য সেড ব্যবহার করতে চেয়েছিলেন (বা সম্ভবত আপনি নামকরণের জন্য খুব জটিল কিছু করছেন?), আপনার রেজেক্সে আরও সুস্পষ্ট হওয়া এটিকে আরও পাঠযোগ্য করে তুলবে। সম্ভবত এর মতো কিছু:
ls F00001-0708-*|sed 's/F0000\(.*\)/mv & F000\1/' | sh
S / অনুসন্ধান / প্রতিস্থাপনে আসলে কী পরিবর্তন হচ্ছে তা দেখতে সক্ষম হওয়ায় এটি আরও বেশি পাঠযোগ্য। এছাড়াও যদি আপনি দুর্ঘটনাক্রমে দু'বার বা অন্য কোনও কিছু চালনা করেন তবে এটি আপনার ফাইলের বাইরে অক্ষরগুলি চুষতে থাকবে না।