500 দিনের বেশি পুরানো ফাইলগুলি মুছুন


10

২০১০ সাল থেকে আমার ফাইলগুলির সাথে ডিরেক্টরি রয়েছে .. আমি ৫০০ দিনেরও বেশি পুরানো সমস্ত ফাইল মুছতে চাই এবং আমি এটি চেষ্টা করেছি:

find /var/log/arc/* -type f -mtime +500 -delete {}\;      

তবে আমি এটি পেয়েছি:

-bash: /usr/bin/find: Argument list too long

আমি জানি যে এর অর্থ এখানে অনেকগুলি ফাইল রয়েছে এবং findসেগুলি পরিচালনা করতে পারে না। এমনকি যদি আমি +20003+ বছর রাখি তবে আমি এটি পাচ্ছি।

আমি এখানে কি মিস করছি?


1
unix.stackexchange.com/a/239268/116858 (আরও মন্তব্য দেখুন)
কুসালানন্দ

উত্তর:


18

আপনি অনুপস্থিত যা findইনপুট হিসাবে ফাইলের তালিকার প্রয়োজন নেই। সমস্যাটি হ'ল গ্লোব /var/log/arc/*অনেকগুলি ফাইলে প্রসারিত হয়। তবে, findডিফল্টরূপে সাব-ডিরেক্টরিতে পুনরাবৃত্তি হবে, সুতরাং গ্লোবটি ব্যবহার করার দরকার নেই:

find /var/log/arc/ -type f -mtime +500 -delete

-deleteএকটি অ-মানক প্রিডিকেট যদি আপনার findবাস্তবায়ন এটি সমর্থন করে না, আপনি ব্যবহার করতে পারেন:

find /var/log/arc/ -type f -mtime +500 -exec rm -f {} +

পরিবর্তে.


ধন্যবাদ তবে এখন এটি পেয়েছে: find: invalid predicate -সিলিট'`
গার্গ

1
@ গ্রাগ প্রথমে, দুঃখিত, আমি আপনার আদেশটি কেবল অনুলিপি করেছিলাম এবং আপনার বাক্য গঠনটি ভুল কিনা তা খেয়াল করি নি। -deleteলাগবে না {}। আপডেট দেখুন। যাইহোক, আপনার ত্রুটি বার্তাটি মনে করে যে আপনার সংস্করণটি findসমর্থন করে না -delete। আপনি যদি জিএনইউ ব্যবহার করছেন না find(যা বেশিরভাগ ক্ষেত্রে আপনি লিনাক্স ব্যবহার না করেই করতে পারবেন না), -exec -rm {} \;পরিবর্তে আপনাকে ব্যবহার করা দরকার ।
টেরডন

ধন্যবাদ. -exec rm {} \;কৌতুক করতে.
গার্গ

1
@hobbs আমি কেন না, দেখতে পায় না -execহয় POSIX দ্বারা সংজ্ঞায়িত
টেরডন

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