কমান্ড লাইনে (ZSH / BASH) অনেকগুলি ফাইল অনুলিপি করুন


13

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

$ls
P1080272.JPG* P1080273.JPG* P1080274.JPG* P1080275.JPG* P1080276.JPG* P1080277.JPG*
P1080278.JPG* P1080279.JPG* P1080280.JPG* P1080281.JPG* P1080282.JPG* P1080283.JPG*

আমি P1080275.JPG থেকে P1080283.JPG- তে অনুরূপ কিছু দিয়ে ফাইলগুলি অনুলিপি করতে চাই:

$cp P10802[75-83].JPG ~/Images/.

এই কাজ করতে একটি উপায় আছে কি?

উত্তর:



9

ব্যাশে কোনও ব্যাপ্তিতে পুনরাবৃত্তি করতে:

for x in {0..10}; do echo $x; done

আপনার ক্ষেত্রে একই প্রয়োগ করা:

for x in {272..283}; do cp P1080$x.JPG ~/Images; done

এটি কাজ করে তবে আমি @glenn জ্যাকম্যানের উত্তরটি আরও ভাল পছন্দ করি কারণ এটি কোনও প্রোগ্রামিং নির্মাণের জন্য আবেদন করে না।
আমজিথ

4

জেডএস, এক্সটেন্ডডগ্লোব বিকল্পের সাথে গ্লোব্বিং (প্যাটার্ন ম্যাচিং) অপারেটর রয়েছে।

setopt extendedglob
echo P10802<75-83>.JPG

বর্তমান নির্দেশিকায় থাকা ফাইলের নামগুলি মিলবে যা সেই প্যাটার্নটির সাথে মেলে (সাবধান হন যে P1080275.JPG মিলছে তবে P108020000000075.JPG এর সাথে মেলে)

অন্য প্রান্তে, directory x ... y} স্ট্রিং এক্সপেনশন অপারেটর (zsh এবং bash এবং ksh93 এর সাম্প্রতিক সংস্করণ দ্বারা সমর্থিত), বর্তমান ডিরেক্টরিটিতে ফাইলগুলি নির্বিশেষে x থেকে y পর্যন্ত স্ট্রিংগুলিতে প্রসারিত হয়।

cp P10802<75-83>.JPG ~there

মিলে যাওয়া ফাইলগুলি অনুলিপি করবে, তাই হবে

cp P10802{75..83}.JPG ~there

উদাহরণস্বরূপ P1080281.JPG উপস্থিত না থাকলে আপনি ত্রুটি পাবেন।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.