ইউনিক্সে নির্দিষ্ট দিনের চেয়ে পুরানো ফাইলগুলি কীভাবে সন্ধান এবং মুছবেন?


38

আমি এতে 7 টি ফোল্ডার যুক্ত লগের জন্য একটি ফোল্ডার পেয়েছি। এই সাতটি ফোল্ডারে তাদের সাবফোল্ডারও রয়েছে এবং সেই সাবফোল্ডারগুলিতেও সাবফোল্ডার রয়েছে। আমি ফোল্ডারের কাঠামোগুলি স্পর্শ না করে সাবফোল্ডার সহ সমস্ত ফোল্ডারে 15 দিনেরও বেশি বয়সী সমস্ত ফাইল মুছতে চাই।

mahesh@inl00720:/var/dtpdev/tmp/ > ls
A1  A2  A3  A4  A5  A6  A7

mahesh@inl00720:/var/dtpdev/tmp/A1/ > ls
B1 B2 B3 B4 file1.txt file2.csv

উত্তর:


54

আপনি বলতে শুরু করতে পারে find /var/dtpdev/tmp/ -type f -mtime +15। এটি 15 দিনের চেয়ে পুরানো সমস্ত ফাইল খুঁজে পাবে এবং তাদের নাম মুদ্রণ করবে। Allyচ্ছিকভাবে, আপনি -printকমান্ডের শেষে নির্দিষ্ট করতে পারেন , তবে এটি ডিফল্ট ক্রিয়া। প্রথমে উপরের কমান্ডটি চালানোর পরামর্শ দেওয়া হয়, কোন ফাইলগুলি নির্বাচন করা হয়েছে তা দেখতে।

findকমান্ডটি যে ফাইলগুলি মুছতে চান (এবং অন্য কোনও নয়) তার তালিকা তৈরি করছে তা যাচাই করার পরে, আপনি ফাইলগুলি মুছতে একটি "ক্রিয়া" যুক্ত করতে পারেন। এটি করার জন্য সাধারণ ক্রিয়াগুলি হ'ল:

  1. -exec rm -f {} \;(বা, সমতুল্য, -exec rm -f {} ';')
    এটি rm -fপ্রতিটি ফাইলে চলবে ; যেমন,

    rm -f /var/dtpdev/tmp/A1/B1; rm -f /var/dtpdev/tmp/A1/B2; rm -f /var/dtpdev/tmp/A1/B3; …
    
  2. -exec rm -f {} +
    এটি rm -fএকবারে অনেকগুলি ফাইলে চলবে ; যেমন,

    rm -f /var/dtpdev/tmp/A1/B1 /var/dtpdev/tmp/A1/B2 /var/dtpdev/tmp/A1/B3 …
    

    সুতরাং এটি বিকল্প 1 এর চেয়ে কিছুটা দ্রুত হতে পারে ((আপনার rm -fকয়েক হাজার ফাইল থাকলে এটি কয়েকবার চালানো হতে পারে ))

  3. -delete
    এটি findনিজেই চালায় না করে ফাইলগুলি মুছতে বলে rm। এটি -execভেরিয়েন্টগুলির চেয়ে স্বল্পতম দ্রুত হতে পারে তবে এটি সমস্ত সিস্টেমে কাজ করবে না।

সুতরাং, আপনি যদি বিকল্প 2 ব্যবহার করেন তবে পুরো কমান্ডটি হ'ল:

find /var/dtpdev/tmp/ -type f -mtime +15 -exec rm -f {} +

-ডিলেট ব্যবহার করা সহজতর (সিনট্যাক্স এবং মুছে ফেলার জন্য কোনও শিশু প্রক্রিয়া তৈরি হয়নি) তবে সমস্ত সিস্টেমে কাজ নাও করতে পারে। আরএম-ফ {} + সেরা, এটি যদি একটি কমান্ড-লাইনের জন্য পর্যাপ্ত ফাইল থাকে তবে ব্যাচগুলিতে ফাইলগুলি মুছে ফেলা হবে। rm -f {} ';' যদি একটি কমান্ড-লাইনের জন্য পর্যাপ্ত ফাইলগুলি থাকে তবে কমান্ডটি দীর্ঘ সময় ত্রুটি দেয়।
gaoithe

-1

অথবা এটি একটি লুপ দিয়ে করুন:

for x in $(find /var/dtpdev/tmp/ -type f -mtime +15); do rm "$x"; done

এটিতে ফাঁকা ফাঁকা ফাইলগুলির সাথে কাজ করবে না।
স্লান স্লোয়ান

পরিবর্তে আপনি কিছুক্ষণ লুপ ব্যবহার করতে পারেন যা স্পেস সহ ফাইলগুলির যত্ন নেওয়া উচিত। Find / var / dtpdev / tmp / -type f -mtime +15 | এক্স পড়ার সময়; do rm "$ x"; সম্পন্ন
ডেভিড Okwii
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.