گاهی ممکن است بخواهید تعداد خیلی زیادی فایل را حذف کنید ولی با خطای
-bash: /bin/rm: Argument list too long
مواجه شوید.
دستور rm در هر بار اجرا تعداد مشخصی فایل را می تواند حذف کند و زمانی که تعداد فایل ها از حد مشخصی بیشتر شود با خطا مواجه می شود.
برای رفع این مشکل می توانید از دستور find استفاده کنید!!
فرض کنید میخواهید تمام فایل هایی که با a شروع می شوند و در پوشه /tmp هستند را حذف کنید.
find /tmp/ -type f -name "a*" | xargs rm
اگر باز هم خطا دریافت کردید میتونید از کد زیر استفاده کنید:
find /tmp/ -path '/tmp/*' -name "abcd*" -type f -prune -mtime +3 | xargs rm
با اجرای دستور فوق فایل هایی که در پوشه /tmp هستند و نام آنها با abcd شروع میشود و تاریخ ویرایش آنها بیشتر از ۳ روز است حذف میشوند.
میتونید بجای mtime +3 عدد دلخواه خود را بنویسید. (مثلا mtime +10 برای فایلهایی که ویرایش آنها بیشتر از ۱۰ روز پیش بوده). یا بجای abcd نام فایل مورد نظر خود را بنویسید و یا بجای /tmp مسیر دلخواه خود را وارد نمایید.
Shortlink for this post: https://blog.talahost.com/?p=120