## 🔍 آموزش پیدا کردن فایلها و پوشهها در لینوکس
(**Find Files and Directories in Linux**)
گاهی وقتا دنبال یه فایل خاص میگردیم اما یادمون نیست کجا گذاشتیمش. لینوکس ابزارهای خوبی داره برای این کار مثل:
- `find` → دقیق، ولی کمی کندتر
- `locate` → سریع، ولی باید بانک اطلاعاتی بهروز باشه
---
## 🟢 روش اول: استفاده از دستور `find`
### 🔸 پیدا کردن فایل بر اساس نام
```bash
find /path/to/search -name "filename.txt"
```
مثال:
```bash
find /home/user/ -name "todo.txt"
```
این دستور فایل `todo.txt` رو در مسیر `/home/user/` و زیرپوشههاش جستجو میکنه.
---
### 🔸 جستجو بدون حساسیت به حروف بزرگ/کوچک
```bash
find /path -iname "filename.txt"
```
`-iname` یعنی اسم فایل رو بدون توجه به بزرگ یا کوچیک بودن حروف پیدا کن.
---
### 🔸 پیدا کردن دایرکتوری خاص
```bash
find /path -type d -name "myfolder"
```
`-type d` یعنی فقط دایرکتوریها رو بررسی کن.
---
### 🔸 پیدا کردن فایل با پسوند خاص
```bash
find /path -name "*.jpg"
```
تمام فایلهایی با پسوند `.jpg` رو پیدا میکنه.
---
### 🔸 پیدا کردن فایل بزرگتر از حجم مشخص
```bash
find / -type f -size +100M
```
فایلهایی که بیشتر از 100 مگابایت حجم دارن.
---
### 🔸 پیدا کردن فایلهایی که اخیراً تغییر کردن
```bash
find /path -type f -mtime -2
```
فایلهایی که در **۲ روز گذشته** ویرایش شدن.
---
## 🟡 روش دوم: استفاده از دستور `locate`
### 🔸 پیدا کردن سریع فایل با `locate`
```bash
locate filename.txt
```
این دستور با استفاده از دیتابیس سیستم مسیر فایل رو خیلی سریعتر پیدا میکنه.
🔁 **قبل از استفاده، بهتره دیتابیس رو آپدیت کنی:**
```bash
sudo updatedb
```
📌 اگر تازه فایل جدیدی ساختی، `locate` ممکنه هنوز پیداش نکنه، چون دیتابیس هنوز بهروز نشده.
---
## 🔵 ترکیب با `grep` برای فیلتر بهتر
مثلاً دنبال فایلهایی هستی که توشون کلمهی خاصی باشه:
```bash
find . -type f -name "*.txt" | xargs grep "hello"
```
یا با `locate`:
```bash
locate .conf | grep apache
```
---
## ⚪ پیدا کردن فایل با دسترسی خاص
```bash
find / -type f -perm 644
```
فایلهایی با سطح دسترسی 644 رو پیدا میکنه.
---
## 📌 خلاصه دستورات
| دستور | کاربرد |
|--------|--------|
| `find /path -name "file"` | پیدا کردن فایل با اسم مشخص |
| `find /path -type d -name "dir"` | پیدا کردن دایرکتوری |
| `find / -size +10M` | پیدا کردن فایلهای بزرگتر از 10MB |
| `locate file.txt` | جستجوی سریع فایل |
| `sudo updatedb` | آپدیت دیتابیس locate |
| `find . -name "*.log" | grep error` | جستجو با فیلتر محتوا |
---
## ✅ نتیجهگیری
دستور `find` خیلی انعطافپذیره و میتونه دقیقترین نتیجه رو بهت بده، ولی کمی کندتره. در مقابل، `locate` سرعت بالایی داره و برای کارهای روزمره عالیه. با یاد گرفتن این دستورات، دیگه هیچ فایلی توی سیستم گم نمیشه! 😄