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


কখনও কখনও আপনি এমন পরিস্থিতিতে পড়েন যেখানে আপনাকে কোনও ডিরেক্টরিতে সমস্ত ফাইল মুছতে হবে বা প্রদত্ত প্রকারের ফাইলগুলি (একটি নির্দিষ্ট এক্সটেনশনের সমাপ্তি) ব্যতীত সমস্ত ফাইল সরিয়ে কেবল একটি ডিরেক্টরি পরিষ্কার করতে হবে।

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

আমরা আরও কিছু সরানোর আগে আসুন আমরা সংক্ষিপ্তভাবে লিনাক্সের একটি গুরুত্বপূর্ণ ধারণা - ফাইলের নাম প্যাটার্ন ম্যাচিংয়ের দিকে নজর রেখে শুরু করি যা আমাদের হাতের মুঠোয় মোকাবেলা করতে সক্ষম করবে enable

লিনাক্সে, শেল প্যাটার্নটি একটি স্ট্রিং যা নিম্নলিখিত বিশেষ অক্ষরগুলি নিয়ে গঠিত, যা ওয়াইল্ডকার্ড বা মেটাচার্যাক্টর হিসাবে পরিচিত:

  1. * - শূন্য বা আরও বেশি অক্ষরের সাথে মেলে
  2. ? - কোনও একক অক্ষরের সাথে মেলে
  3. [seq] - সিক-এর কোনও বর্ণের সাথে মেলে
  4. [! seq] - কোনও অক্ষরের সাথে মেলে না সিক

এখানে তিনটি সম্ভাব্য পদ্ধতি রয়েছে যা আমরা এখানে ঘুরে দেখব এবং এর মধ্যে রয়েছে:

বর্ধিত প্যাটার্ন ম্যাচিং অপারেটর ব্যবহার করে ফাইলগুলি মুছুন

বিভিন্ন প্রসারিত প্যাটার্ন মিলে যাওয়া অপারেটরগুলিকে নীচে তালিকাভুক্ত করা হয়েছে, যেখানে প্যাটার্ন-তালিকাটি এমন একটি তালিকা যা একটি বা একাধিক ফাইলের নাম ধারণ করে | অক্ষর ব্যবহার করে পৃথক করা হয়েছে:

  1. * (প্যাটার্ন-তালিকা) - নির্দিষ্ট নিদর্শনগুলির শূন্য বা আরও উপস্থিতির সাথে মেলে
  2. ? (প্যাটার্ন-তালিকা) - নির্দিষ্ট প্যাটার্নগুলির শূন্য বা একটি ঘটনার সাথে মেলে
  3. + (প্যাটার্ন-তালিকা) - নির্দিষ্ট নিদর্শনগুলির এক বা একাধিক ঘটনার সাথে মেলে
  4. @ (প্যাটার্ন-তালিকা) - নির্দিষ্ট নিদর্শনগুলির মধ্যে একটির সাথে মেলে
  5. ! (প্যাটার্ন-তালিকা) - প্রদত্ত নিদর্শনগুলির মধ্যে একটি ব্যতীত অন্য কোনও কিছুর সাথে মেলে

এগুলি ব্যবহার করতে, এক্সটগ্লোব শেল বিকল্পটি নিম্নলিখিতভাবে সক্ষম করুন:

# shopt -s extglob

১. ডিরেক্টরিতে ফাইলের নাম বাদে সমস্ত ফাইল মুছতে, নীচের কমান্ডটি টাইপ করুন:

$ rm -v !("filename")

2. ফাইলের নাম 1 এবং ফাইলের নাম 2 ব্যতীত সমস্ত ফাইল মুছতে:

$ rm -v !("filename1"|"filename2") 

৩. নীচের উদাহরণে দেখানো হয়েছে কীভাবে সমস্ত .zip ফাইলগুলি ইন্টারেক্টিভভাবে বাদ দেওয়া যায়:

$ rm -i !(*.zip)

৪. এরপরে, আপনি যা যা চলছে তা প্রদর্শনের সময় নীচে সমস্ত .zip এবং .odt ফাইল বাদে ডিরেক্টরিতে সমস্ত ফাইল মুছতে পারেন:

$ rm -v !(*.zip|*.odt)

আপনার সমস্ত প্রয়োজনীয় কমান্ডগুলি হয়ে গেলে, এক্সট্র্লোব শেল বিকল্পটি বন্ধ করুন:

$ shopt -u extglob

লিনাক্স ফাইন্ড কমান্ড ব্যবহার করে ফাইলগুলি মুছুন

এই পদ্ধতির অধীনে, আমরা নীচের ফর্মগুলির মতো পাইপলাইন নিয়োগ করে উপযুক্ত বিকল্পগুলির সাথে বা xargs কমান্ডের সাথে একত্রে ফাইন্ড কমান্ডটি ব্যবহার করতে পারি:

$ find /directory/ -type f -not -name 'PATTERN' -delete
$ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm {}
$ find /directory/ -type f -not -name 'PATTERN' -print0 | xargs -0 -I {} rm [options] {}

5. নিম্নলিখিত ডিরেক্টরিটি বর্তমান ডিরেক্টরিতে .gz ফাইল বাদে সমস্ত ফাইল মুছে ফেলবে:

$ find . -type f -not -name '*.gz'-delete

6. একটি পাইপলাইন এবং xargs ব্যবহার করে, আপনি উপরের কেসটিকে নিম্নরূপে সংশোধন করতে পারেন:

$ find . -type f -not -name '*gz' -print0 | xargs -0  -I {} rm -v {}

Us. আসুন একটি অতিরিক্ত উদাহরণটি দেখুন, নীচের কমান্ডটি .gz , .odt , এবং .jpg ফাইলগুলি বাদ দিয়ে সমস্ত ফাইল মুছবে will বর্তমান ডিরেক্টরিতে:

$ find . -type f -not \(-name '*gz' -or -name '*odt' -or -name '*.jpg' \) -delete

ব্যাশ গ্লোবিগনর ভেরিয়েবল ব্যবহার করে ফাইলগুলি মুছুন

এই শেষ পদ্ধতির তবে কেবল বাশ দিয়ে কাজ করে। এখানে, গ্লোবিগনোর ভেরিয়েবলটি পথের নাম সম্প্রসারণ দ্বারা উপেক্ষা করার জন্য একটি কোলন-বিভক্ত প্যাটার্ন-তালিকা (ফাইলের নাম) সংরক্ষণ করে।

এই পদ্ধতিটি নিয়োগের জন্য, আপনি যে ডিরেক্টরিটি পরিষ্কার করতে চান সেই ডিরেক্টরিতে যান, তারপরে নীচে GLOBIGNORE ভেরিয়েবল সেট করুন:

$ cd test
$ GLOBIGNORE=*.odt:*.iso:*.txt

এই উদাহরণে, .odt , .iso , এবং .txt ফাইল ব্যতীত অন্যান্য ফাইল বর্তমান ডিরেক্টরি থেকে মুছে ফেলা হবে।

ডিরেক্টরিটি পরিষ্কার করার জন্য এখন কমান্ডটি চালান:

$ rm -v *

এরপরে, গ্লোবিগনোর ভেরিয়েবলটি বন্ধ করুন:

$ unset GLOBIGNORE

দ্রষ্টব্য: উপরের কমান্ডগুলিতে নিযুক্ত পতাকাগুলির অর্থ বোঝার জন্য, আমরা বিভিন্ন চিত্রগুলিতে ব্যবহার করেছি প্রতিটি কমান্ডের ম্যান পেজগুলি দেখুন।

এখানেই শেষ! একই উদ্দেশ্যে আপনার যদি অন্য কোনও কমান্ড লাইনের কৌশল মনে থাকে তবে নীচে আমাদের প্রতিক্রিয়া বিভাগের মাধ্যমে আমাদের সাথে ভাগ করে নিতে ভুলবেন না।