আমি 7 দিনের চেয়ে পুরানো সমস্ত ফাইল মুছতে কমান্ডটি নীচে লিখছি, তবে এটি কার্যকর হয় না:
find /media/bkfolder/ -mtime +7 -name'*.gz' -exec rm {} \;
আমি কীভাবে এই ফাইলগুলি সরিয়ে ফেলতে পারি?
আমি 7 দিনের চেয়ে পুরানো সমস্ত ফাইল মুছতে কমান্ডটি নীচে লিখছি, তবে এটি কার্যকর হয় না:
find /media/bkfolder/ -mtime +7 -name'*.gz' -exec rm {} \;
আমি কীভাবে এই ফাইলগুলি সরিয়ে ফেলতে পারি?
উত্তর:
@ জোস যেমন উল্লেখ করেছেন আপনি 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
-delete
শেষের সাথে সোজা যাব না ? +
বা সাথে গণ্ডগোল কেন \;
?
সন্ধানের সাথে ফাইলগুলি অপসারণে সাবধানতা অবলম্বন করুন। আপনি কী অপসারণ করছেন তা যাচাই করতে -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 {} \;
name
এবং এর মধ্যে একটি স্থান থাকা উচিত'*.gz'
।