উত্তর:
যদি ফাইলের নামগুলি ধারাবাহিকভাবে সংখ্যাযুক্ত হয় তবে কেবল নিম্নলিখিত কমান্ডটি চালান:
rm fileName_{100..100000}
execএকটি প্রক্রিয়া থাকতে পারে যে আর্গুমেন্ট সংখ্যার কল দ্বারা একটি সীমাবদ্ধতা আছে। আপনি এটি দিয়ে পুনরুদ্ধার করতে পারেন getconf ARG_MAX। উদাহরণস্বরূপ আমার সিস্টেমে এটি 2097152(২.১ মিলিয়ন ডলার)। এর অর্থ হ'ল rm(যা কোনও অন্তর্নির্মিত নয়) এর চেয়ে অনেক বেশি ফাইলের সাথে ব্যর্থ হবে। অন্তর্নির্মিত কমান্ডগুলির মধ্যে এই সমস্যা নেই এবং অন্য সমাধানগুলির প্রস্তাবও নেই।
আপনি এই আদেশটিও চেষ্টা করে দেখতে পারেন,
for i in $(seq 100 100000); do rm fileName_$i; done
যদি ফাইলের নামটিতে অনুক্রমিক ক্রমে নম্বর থাকে তবে এটি সমস্ত ফাইল (100 থেকে 100000 অবধি) মুছে ফেলবে।
সাধারণভাবে আপনার এটি অর্জনের বিভিন্ন উপায় রয়েছে:
rm fileName_{100..100000}
শেল দ্বারা প্রায় 100,000 ফাইলের নামগুলিতে প্রসারিত হবে। যদি বেসনামটি দীর্ঘ পথ এবং সংখ্যাটি যথেষ্ট পরিমাণে থাকে তবে আপনি সম্ভবত এই পদ্ধতির সাথে একটি কমান্ড লাইনের সর্বাধিক দৈর্ঘ্য অতিক্রম করতে পারেন।
forলুপ
for i in $(seq 100 100000); do rm fileName_$i; done
এই সমস্যায় ভুগছেন না, তবে ফাইলগুলি মুছে ফেলার অপেক্ষাকৃত ধীর পথ, কারণ শেলটি পরিবর্তনশীল প্রতিস্থাপন এবং প্রায় 100,000 বার আরএম চালু করতে হয়।
উপরের দুটি পদ্ধতিই যদি কিছু ফাইল, filename_101অনুপস্থিত থাকে বলে সতর্কবার্তা তৈরি করতে পারে ।
সাধারণত, ভিত্তিক সমাধানগুলি findআরও ভাল হয়, কারণ তারা কেবল সেখানে উপস্থিত ফাইলগুলিতে কাজ করে (আবিষ্কারের সময়)। তবে কিছু সূক্ষ্ম পার্থক্য রয়েছে:
find . -name 'fileName_[100-100000]' -exec rm {} \;
এখনো আরম্ভ হবে rm, 100,000 বার সম্পর্কে প্রোগ্রাম যখন চূড়ান্ত প্রতিস্থাপন \;দ্বারা +subprocesses সংখ্যা কমানোর জন্য চেষ্টা করবে। উভয় পদ্ধতিই সম্ভবত ব্যবহারের চেয়ে ধীরে ধীরে (অনেক বেশি বা কিছুটা) ধীরে ধীরে হবে -deleteযা বাহ্যিক আদেশগুলি মোটেও ব্যবহার করে না তবে পরিবর্তে সিস্টেম কল আহ্বান করে।
যাইহোক, প্যাটার্নটি আপনি যে টার্গেট করতে চান সেই ফাইলগুলির সাথে আসলে মেলে কিনা তা সর্বদা চেক করুন:
stefan@tuxedo ~ % mkdir askubuntu
stefan@tuxedo ~ % touch askubuntu/filename_{1..1000}
stefan@tuxedo ~ % find askubuntu -name 'filename_[100-1000]'
askubuntu/filename_1
সুতরাং এক্ষেত্রে আপনি যে ফাইলটি রাখতে চান তা মুছতে এবং ফাইলগুলি সরিয়ে ফেলা উচিত ছিল।
নিম্নলিখিত কমান্ডটি ব্যবহার করুন:
find . -name 'fileName_[100-100000]' -exec rm {} \;
এটি 100 থেকে 100000 পর্যন্ত ফাইলগুলি মুছবে।
আরও তথ্য: সাইট
[100-100000] চরিত্র শ্রেণী শুধুমাত্র একটি একক চরিত্র মিলে যায়, তাই এটি শুধুমাত্র 0 বা 1. মেলাতে পারে
{x..y}পুরো তালিকায় প্রসারিত করবে । উদাহরণস্বরূপ আপনি যদিecho test{1..3}এটি ব্যবহার করেন তবে এটি প্রসারিত হবেecho test1 test2 test3এবং তারপরে কার্যকর করা হবে। আপনি দেখতে পাচ্ছেন, এটি প্রিন্ট করেtest1 test2 test3। একইভাবে, যদি{x..y}কোনও যুক্তির সাথে সংযুক্ত না হয়, এটি কেবল সংখ্যাগুলি সেখানে রাখবে। যেমনecho test {1..3}শুধু মুদ্রণ করবেtest 1 2 3।