پرش به محتویات

درسنامه ۲-۸: جست‌وجوی فایل‌ها با find

find فایل‌ها/پوشه‌ها را بر اساس نام، نوع، اندازه، زمان و ... پیدا می‌کند.

مثال‌های کاربردی

find . -type f -name "*.log"            # همهٔ فایل‌های log
find ~ -type d -name "venv"              # دایرکتوری‌های venv
find /var/log -type f -size +5M          # بزرگ‌تر از ۵ مگابایت
find . -type f -mtime -7                 # تغییر کرده در ۷ روز گذشته

اجرای فرمان روی نتایج

find . -type f -name "*.tmp" -delete
find . -type f -name "*.txt" -exec wc -l {} +

نکته: از -exec ... {} + برای اجرای گروهی استفاده کنید (بهتر از \;).

تمرین کوتاه

  • همهٔ فایل‌های .sh را پیدا کنید و تعداد خطوط هرکدام را بشمارید.
  • تمام فایل‌های حجیم‌تر از ۱۰MB در Downloads را بیابید.

نکات و مثال‌های بیشتر

  • ترکیب چند شرط:
find . -type f -name "*.log" -mtime -3 -size +1M
  • فیلتر بر اساس دسترسی‌ها و مالک:
find . -type f -perm 0644 -user $USER
  • چاپ فقط نام فایل یا مسیر نسبی/مطلق:
find . -type f -printf "%f\n"
find . -type f -printf "%p\n"
  • اجرا با xargs برای کارایی بیشتر:
find . -type f -name "*.txt" -print0 | xargs -0 wc -l

خطاهای رایج

  • استفاده از -exec ... \; برای تعداد زیادی فایل؛ در صورت امکان از + استفاده کنید.
  • نداشتن نقل‌قول دور الگوها و گسترش ناخواسته توسط شل.