-delete
বোঝায় -depth
যে কাজ করে না -prune
( -depth
পাতাগুলি দিয়ে শুরু হয়)। জিএনইউ সংস্করণটির ম্যানুয়ালটিতে এ সম্পর্কে একটি সতর্কতা রয়েছে ( -delete
এটি এখন ফ্রিবিএসডি এক্সটেনশান যা জিএনইউ find
এবং আরও কয়েকটি বাস্তবায়ন দ্বারা সমর্থিত )।
info find --index-search=-delete
কমান্ড লাইনে 'মুছে ফেলা' অ্যাকশনটির ব্যবহার স্বয়ংক্রিয়ভাবে '-ডেপথ' বিকল্পটি চালু করে (* নোটটি এক্সপ্রেশনগুলি সন্ধান করুন: :)। আপনি যদি আগে 'প্রিন্ট' দিয়ে পরীক্ষা করছিলেন তবে এটি অবাক করে দিতে পারে, তাই সাধারণত '-ডেপথ' স্পষ্টভাবে ব্যবহার করা মনে রাখা ভাল।
info find --index-search=-prune
কারণ '-ডিলেট' '-ডেপথ' বোঝায়, '-ডিলেট' এর সাথে '-পুন' ব্যবহার করে আপনার ইচ্ছার চেয়ে বেশি ফাইল মুছতে পারে।
এখানে, আপনি rm
পরিবর্তে ব্যবহারের বিকল্প পেয়েছেন :
find . -name save -prune -o -type f -exec rm -f {} +
( সেখানে ডিরেক্টরিতে অন্যের দ্বারা লিখনযোগ্য ডিরেক্টরি থাকলে সম্ভাব্য অনিরাপদ , কারণ আপনি যখন সেই আদেশটি চালাবেন তখন সিমলিংকের সাহায্যে ডিরেক্টরিগুলি প্রতিস্থাপন করে আপনি বর্তমান ডিরেক্টরি গাছের বাইরে ফাইলগুলি মুছতে পারেন)।
একটি নিরাপদ বিকল্প:
find . -name save -prune -o -type f -execdir rm -f -- {} \;
উপরে উল্লিখিত সমস্যা নেই তবে rm
প্রতি ফাইলের মধ্যে একটি চালানো মানে running --
FreeBSD 'র বাস্তবায়ন না উপসর্গ ফাইলের নাম গনুহ এক যে সঙ্গে জন্য প্রয়োজনীয় ./
।
বিকল্পভাবে, কস্টাসের পরামর্শ অনুসারে:
LC_ALL=C find . ! -name save ! -path '*/save/*' -type f -delete
(তবে এটি এখনও অযথা save
ডিরেক্টরিতে নেমেছে )
LC_ALL=C
সেখানে তাই *
বাইট কোন ক্রম (এমনকি যেগুলি বর্তমান লোকেলে বৈধ অক্ষর গঠন করবেন না) সাথে মেলে। দ্রষ্টব্য যে এটি ত্রুটি বার্তাগুলির ভাষা (ব্যবহারকারীর ভাষার পরিবর্তে ইংরেজি) প্রভাবিত করবে।
mv save/ ../some/safer/location
জাতীয় "জেনেরিক" মুছুন কমান্ডের আগে একটি সাধারণ প্রস্তাব দিচ্ছি (... তবে অবশ্যই আপনার পোস্টের আগে আমি একই চেকটি করতাম এবং একই সমস্যায় পড়তাম!)। এখন ফাইল সিস্টেমে ফাইলগুলি for