# درسنامه ۲-۸: جست‌وجوی فایل‌ها با 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 ... \;` برای تعداد زیادی فایل؛ در صورت امکان از `+` استفاده کنید. - نداشتن نقل‌قول دور الگوها و گسترش ناخواسته توسط شل.