টার্মিনাল থেকে সহজেই টাইপ করা যায় এমন এক-লাইনার:
for f in *.md; do mv "$f" "test - $f"; done
অথবা সেমিকোলন ব্যবহারের পরিবর্তে পৃথক রেখায় পুনরায় লিখিত:
for f in *.md
do
mv "$f" "test - $f"
done
উদ্ভাস
এর সিনট্যাক্স for
(ইন sh
):
for NAME [in WORDS ... ] ; do COMMANDS; done
এখানে, আমাদের NAME
হয় f
এবং আমাদের WORDS
বর্তমান ডিরেক্টরী ম্যাচিং সমস্ত ফাইল *.md
। সুতরাং ভেরিয়েবলটি $f
প্রতিটি ফাইলের সাথে মিলে যাবে *.md
।
সুতরাং জন্য a.md
:
mv "$f" "test - $f"
হয়ে
mv "a.md" "test - a.md"
উদ্ধৃতিগুলি গুরুত্বপূর্ণ কারণ প্রতিটি ফাইলের $f
নামেই ফাঁকা স্থান থাকতে পারে। অন্যথায় mv
প্রতিটি শব্দ পৃথক ফাইল বলে মনে করবে। উদাহরণস্বরূপ, যদি কোনও উদ্ধৃতি না থাকে, এবং একটি ফাইল বলা হয় Foo Bar.md
, এটি এটি অনুবাদ করবে:
mv Foo Bar.md test - Foo Bar.md
যা ইচ্ছাকৃতভাবে কাজ করবে না। তবে $f
উদ্ধৃতিগুলিতে মোড়ক দিয়ে তা বোঝায়:
mv "Foo Bar.md" "test - Foo Bar.md"
এর বাক্য গঠনটি উল্লেখ করে for
, আপনি *.md
প্রতিটি ফাইলের একটি নির্দিষ্ট করে নাম উল্লেখ করে একটি উপসেটটির নাম পরিবর্তন করতে পারেন :
for f in a.md b.md d.md; do mv "$f" "Test - $f"; done
বা শেল প্রসার ব্যবহার করে:
for f in {a,b,d}.md; do mv "$f" "Test - $f"; done