7 দিনের চেয়ে পুরানো ফাইলগুলি সরানো হচ্ছে


79

আমি 7 দিনের চেয়ে পুরানো সমস্ত ফাইল মুছতে কমান্ডটি নীচে লিখছি, তবে এটি কার্যকর হয় না:

find /media/bkfolder/ -mtime +7 -name'*.gz' -exec rm {} \;

আমি কীভাবে এই ফাইলগুলি সরিয়ে ফেলতে পারি?


5
nameএবং এর মধ্যে একটি স্থান থাকা উচিত '*.gz'
জোস

উত্তর:


136

@ জোস যেমন উল্লেখ করেছেন আপনি nameএবং এর মধ্যে একটি জায়গা মিস করেছেন '*.gz'; কমান্ডটি ব্যবহারের -type fবিকল্পটি কেবলমাত্র f াইলগুলিতে চালাতে কমান্ডটি ব্যবহার করতে পারেন ।

সুতরাং স্থির আদেশটি হ'ল:

find /path/to/ -type f -mtime +7 -name '*.gz' -execdir rm -- '{}' \;

ব্যাখ্যা:

  • find: খোঁজার জন্য UNIX কমান্ডটি Iles / irectories / INKS এবং ইত্যাদি
  • /path/to/: আপনার অনুসন্ধান শুরু করার জন্য ডিরেক্টরি।
  • -type f: কেবল ফাইলগুলি সন্ধান করুন।
  • -name '*.gz': এর সাথে শেষ হওয়া ফাইলগুলির তালিকা দিন .gz
  • -mtime +7: পরিবর্তনের সময়টি কেবল mod দিনের চেয়ে পুরানো consider
  • -execdir ... \;: পাওয়া প্রতিটি ফলাফলের জন্য, নিম্নলিখিত কমান্ডটি ভিতরে করুন ...
  • rm -- '{}': ফাইলটি সরান; {}অংশ কোথায় ফলাফলের পূর্ববর্তী অংশ থেকে বা প্রতিস্থাপিত পরার। --মানে কমান্ডের প্যারামিটারগুলি হাইফেন দিয়ে শুরু হওয়া ফাইলগুলির জন্য প্রম্পট ত্রুটি এড়াতে পারে ।

বিকল্পভাবে, ব্যবহার করুন:

find /path/to/ -type f -mtime +7 -name '*.gz' -print0 | xargs -r0 rm --

মানুষের কাছ থেকে সন্ধান করুন :

-print0 
      True; print the full file name on the standard output, followed by a null character 
  (instead of the newline character that -print uses). This allows file names that contain
  newlines or other types of white space to be correctly interpreted by programs that process
  the find output. This option corresponds to the -0 option of xargs.

যা কিছুটা বেশি দক্ষ, কারণ এটি এর পরিমাণ:

rm file1 file2 file3 ...

উল্টোদিকে:

rm file1; rm file2; rm file3; ...

-execপদ্ধতি হিসাবে ।


একটি বিকল্প এবং দ্রুততর কমান্ড এর +পরিবর্তে এক্সিকিউটারের টার্মিনেটর ব্যবহার করছে\; :

find /path/to/ -type f -mtime +7 -name '*.gz' -execdir rm -- '{}' +

এই কমান্ডটি rmএকবারে কোনও ফাইল সন্ধানের পরিবর্তে একবারে চলবে এবং এই কমান্ডটি -deleteআধুনিক হিসাবে নিম্নলিখিত বিকল্পগুলির ব্যবহার হিসাবে প্রায় তত দ্রুত find:

find /path/to/ -type f -mtime +7 -name '*.gz' -delete

3
কেন আমি -deleteশেষের সাথে সোজা যাব না ? +বা সাথে গণ্ডগোল কেন \;?
বৃষ্টি01


2

সন্ধানের সাথে ফাইলগুলি অপসারণে সাবধানতা অবলম্বন করুন। আপনি কী অপসারণ করছেন তা যাচাই করতে -l সহ কমান্ডটি চালান

find /media/bkfolder/ -mtime +7 -name '*.gz' -ls । তারপরে ইতিহাস থেকে কমান্ডটি টানুন এবং সংযোজন করুন-exec rm {} \;

একটি ফাইন্ড কমান্ড করতে পারে এমন ক্ষতি সীমিত করুন। আপনি যদি কেবল একটি ডিরেক্টরি থেকে ফাইলগুলি সরাতে চান তবে -maxdepth 1সাব-ডিরেক্টরিতে চলতে বা টাইপ করলে পুরো সিস্টেমটি অনুসন্ধান করা থেকে বিরত থাকে /media/bkfolder /

আমি যুক্ত অন্যান্য সীমাগুলি সুনির্দিষ্ট নামের যুক্তি যেমন -name 'wncw*.gz'সময়ের চেয়ে আরও নতুন যোগ করা -mtime -31এবং অনুসন্ধান করা ডিরেক্টরিগুলি উদ্ধৃত করা। আপনি ক্লিনআপগুলি স্বয়ংক্রিয়ভাবে চালিয়ে যাচ্ছেন তবে এগুলি বিশেষত গুরুত্বপূর্ণ।

find "/media/bkfolder/" -maxdepth 1 -type f -mtime +7 -mtime -31 -name 'wncw*.gz' -ls -exec rm {} \;

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