🔍 بخش ۱۶ – جستجو در لینوکس با find و locate

""

📖 مقدمه

وقتی سیستم‌عامل لینوکس پر از فایل و پوشه باشه، پیدا کردن یک فایل به روش دستی تقریبا غیرممکنه — مخصوصا روی سرورها و دایرکتوری‌های بزرگ.
اینجاست که دو ابزار قدرتمند find و locate وارد می‌شوند:

  • find → جستجو به‌صورت واقعی در فایل‌سیستم، با بررسی لحظه‌ای.
  • locate → جستجو از طریق یک پایگاه‌داده‌ای که قبلاً ساخته شده (بسیار سریع).

🏗 فصل ۱ – دستور find (جستجوی زنده در سیستم)

۱.۱ ساختار کلی

find مسیر [شرط‌ها] [عمل]
  • مسیر: از کجا شروع به جستجو کند.
  • شرط‌ها: بر اساس نام، نوع، تاریخ، اندازه و…
  • عمل: کاری که بعد از پیدا کردن انجام دهد (مثل نمایش یا حذف).

۱.۲ جستجوی فایل بر اساس نام

find /home -name "report.txt"

اگر بخواهید بدون توجه به حروف بزرگ یا کوچک جستجو کنید:

find /home -iname "report.txt"

۱.۳ جستجو بر اساس الگو (Pattern)

find /var/log -name "*.log"

۱.۴ جستجوی پوشه‌ها

find /home -type d -name "projects"

۱.۵ جستجو بر اساس اندازه

find / -size +100M

معنی:

  • +100M → بزرگتر از ۱۰۰ مگابایت
  • -50k → کوچکتر از ۵۰ کیلوبایت

۱.۶ جستجو بر اساس زمان تغییر

  • فایل‌های تغییر یافته در ۷ روز گذشته:
find /etc -mtime -7
  • فایل‌های تغییر یافته بیش از ۳۰ روز پیش:
find /var/log -mtime +30

۱.۷ اجرای عملی روی فایل‌های پیدا شده

حذف همه فایل‌های .tmp در /tmp:

find /tmp -name "*.tmp" -type f -delete

یا با exec:

find /tmp -name "*.tmp" -type f -exec rm {} \;

۱.۸ نمایش فقط مسیر فایل (بدون پیام خطا)

find /home/user -name "data.csv" 2>/dev/null

⚡ فصل ۲ – دستور locate (جستجوی سریع با دیتابیس)

۲.۱ تفاوت با find

  • find → جستجو در لحظه، ممکن است کند باشد، ولی دقیق است.
  • locate → جستجو بر پایه پایگاه‌داده، سریع است اما داده‌های تازه ایجاد شده قبل از آپدیت دیتابیس را نمی‌یابد.

۲.۲ نصب locate

در توزیع‌های Debian/Ubuntu:

sudo apt install mlocate

در CentOS/Fedora:

sudo yum install mlocate

۲.۳ به‌روزرسانی پایگاه‌داده

sudo updatedb

این کار خروجی جستجو را دقیق‌تر می‌کند.


۲.۴ جستجوی سریع

locate report.txt

۲.۵ جستجو بر اساس بخشی از نام

locate log | grep apache

۲.۶ محدود کردن نتایج

locate -l 10 passwd

(-l یعنی تعداد نتایج محدود شود.)


🛡 فصل ۳ – نکات و ترفندهای ایمنی و سرعت

  1. در مسیرهای بزرگ از locate استفاده کن چون سریع‌تر است.
  2. وقتی دنبال فایل خیلی جدید هستی از find استفاده کن چون دیتابیس locate نیاز به آپدیت دارد.
  3. برای حذف فایل‌ها با find همیشه اول بررسی کن:
find /tmp -name "*.tmp"

و بعد حذف را انجام بده.


🎯 فصل ۴ – تمرین‌های عملی

تمرین ۱ – پیدا کردن همه فایل‌های .conf

find /etc -name "*.conf"

تمرین ۲ – جستجوی فایل‌های بزرگتر از ۵۰۰ مگابایت

find / -size +500M 2>/dev/null

تمرین ۳ – پیدا کردن فایل‌های جدیدتر از یک روز

find /var/log -mtime -1

تمرین ۴ – جستجوی سریع با locate

locate .bashrc

💡 فصل ۵ – سناریوی واقعی: پاکسازی اتوماتیک لاگ‌های قدیمی

فرض کن سرور پر شده از لاگ‌های قدیمی‌تر از ۳۰ روز:

find /var/log -type f -name "*.log" -mtime +30 -exec rm -v {} \;

برای اجرای سریع مشابه، می‌توان مسیرها را با locate گرفت و فیلتر کرد، ولی دقت پایین‌تری دارد.


📌 جمع‌بندی

  • find → همه‌فن‌حریف، دقیق، ولی ممکن است کند باشد.
  • locate → فوق سریع، ولی نیازمند دیتابیس به‌روز.
  • می‌توان این دو را ترکیب کرد برای جستجوی بهتر.
محمد وب‌سایت

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *