কিভাবে অনেকগুলি (200 000) ফাইল সরিয়ে ফেলবেন?


17

আমার অবশ্যই একটি ফোল্ডার থেকে 200,000 ফাইল (এগুলির সমস্ত) সরিয়ে ফেলতে হবে এবং আমি নিজেই ফোল্ডারটি মুছতে চাই না।

আরএম ব্যবহার করে, আমি একটি "তর্ক তালিকা খুব দীর্ঘ" ত্রুটি পেয়েছি। আমি xargs দিয়ে কিছু করার চেষ্টা করেছি, তবে আমি শেল গাই নই, সুতরাং এটি কার্যকর হয় না:

find -name * | xargs rm -f

5
মুছে ফেলার পরে ফোল্ডারটি মুছবেন না এবং পুনরায় তৈরি করবেন না কেন?
গারকনকন

উত্তর:


35
$ find /path/to/folder -type f -delete

15
এটি সম্ভবত উল্লেখযোগ্য যে জিএনইউ অনুসন্ধান (বেশিরভাগ লিনাক্স ডিস্ট্রিবিউশন দ্বারা ব্যবহৃত হিসাবে) নিজস্ব ফাইল ফাইলগুলি মুছতে পারে -delete-print0এটিতে উদ্ধৃতি বা নিউলাইন অক্ষরযুক্ত ফাইলগুলির সমস্যাও এড়ানো যায় (যদিও আপনি এটি -0ঠিক করতে GNU ফাইন্ডস এবং GNU xarg এর বিকল্পগুলি ব্যবহার করতে পারেন )।
DerfK

3
@ ডারফকে, ভালো মন্তব্য! এছাড়াও, PPL প্রচুর সঙ্গে খেলা করার ঝোঁক xargsএদিকে findহয়েছে -exec command {} +সিনট্যাক্স।
পোজ

5

আপনি সবকিছু ঠিকঠাক করছেন। এটি '*' যা আপনাকে একটি সমস্যা দেয় (শেল এটির পরিবর্তে ফাইলের তালিকায় প্রসারিত করছে find)। সঠিক বাক্য গঠনটি হতে পারে:

cd <your_directory>; find . -type f | xargs rm -f
find <your_directory> -type f | xargs rm -f

(পরবর্তীকালে এটি কিছুটা কম দক্ষ কারণ এটি দীর্ঘ নামগুলি পাস করবে xargsতবে আপনি খুব কমই লক্ষ্য করবেন :-))

বিকল্পভাবে, আপনি আপনার '*' এড়াতে পারবেন (তবে সেই ক্ষেত্রে এটি "।" এবং ".." অপসারণের চেষ্টাও করবে; এটি কোনও বড় কথা নয় - আপনি কেবল একটি সামান্য সতর্কতা পাবেন :-)):

find . -name '*' | xargs rm -f
find . -name "*" | xargs rm -f
find . -name \* | xargs rm -f

যদি আপনার ফাইলের নামগুলিতে স্পেস থাকে তবে এটি ব্যবহার করুন:

find . -type f -print0 | xargs -0 rm -f

1
আপনার যদি কোনও স্থান সহ কোনও ফাইলের নাম থাকে তবে এটি কাজ করে না।
ব্যবহারকারী 9517

@ লাইন: হ্যাঁ, আমি সাদা জায়গাগুলির জন্য কৌশলটি অন্তর্ভুক্ত করার জন্য আমার উত্তরটি সম্পাদনা করতে গিয়েছিলাম :-)
dtoubelis

3

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

find . -type f -exec rm {} \;

2
-name '*'"সমস্ত ফাইল" এর অর্থ এই নয়। ফাইলগুলি এতে বলা হয়:-type f
পোজ

2

আপনি চেষ্টা করতে পারেন

find /path/to/folder -type f -print0  | xargs -0 rm -f

অথবা

find /path/to/folder -type f -exec rm -f "{}" +

1

কোয়ান্টাসের উত্তর থেকে উত্তর, এখানে কিছু সংযোজন রয়েছে।

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

sudo find /home/mydirectory -name "*.jpg" -type f -print -delete

উদাহরণস্বরূপ এটি মায়িডাইরেক্টরিতে সমস্ত জেপিগগুলি মুছে দেয়।

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