# جستجو و یافتن الگوها یا رشتهها در فایلهای متنی در لینوکس
یافتن یک کلمه، عبارت یا الگوی خاص در فایلهای متنی یکی از رایجترین نیازها هنگام کار با سیستمعامل لینوکس است. ابزارهای خط فرمان مانند `grep` و `find` به شما این امکان را میدهند که به سرعت اطلاعات مورد نظر خود را پیدا کنید.
---
## 📌 استفاده از دستور `grep` برای جستجوی رشتهها
### 1. جستجوی ساده یک کلمه در یک فایل
```bash
grep "کلمه" filename.txt
```
این دستور تمام خطوطی که شامل کلمه مورد نظر هستند را نمایش میدهد.
### 2. جستجوی بدون حساسیت به حروف بزرگ و کوچک
```bash
grep -i "word" filename.txt
```
مثلاً: `grep -i "error" logfile.txt` هم `Error` را پیدا میکند هم `error`.
### 3. نمایش شماره خطوط
```bash
grep -n "کلمه" filename.txt
```
### 4. جستجو در چندین فایل
```bash
grep "کلمه" *.txt
```
### 5. جستجو در کل دایرکتوری و زیرشاخهها
```bash
grep -r "کلمه" /path/to/dir
```
- `-r` یا `--recursive`: جستجوی بازگشتی
---
## 🎯 استفاده از الگوهای منظم (Regular Expressions)
### مثال: یافتن خطوطی که با عدد شروع میشوند
```bash
grep "^[0-9]" filename.txt
```
### مثال: یافتن ایمیلها
```bash
grep -E "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}" filename.txt
```
- `-E`: فعالکردن الگوهای پیشرفته (extended regex)
---
## 🔍 یافتن خطوطی که شامل یک رشته **نیستند**
```bash
grep -v "کلمه" filename.txt
```
- `-v`: نادیده گرفتن خطوط شامل رشته
---
## 📂 استفاده از `find` به همراه `grep`
اگر نمیدانید فایلها کجا هستند، میتوانید از ترکیب `find` و `grep` استفاده کنید:
```bash
find . -name "*.log" -exec grep -i "error" {} \;
```
این دستور تمام فایلهای `.log` در دایرکتوری جاری و زیرشاخهها را جستجو کرده و در آنها دنبال کلمه "error" میگردد.
---
## 📝 نکات کاربردی
| گزینه | توضیح |
|-------|--------|
| `-i` | غیرفعالکردن حساسیت به حروف کوچک و بزرگ |
| `-n` | نمایش شماره خط |
| `-v` | نادیده گرفتن خطوط شامل عبارت |
| `-r` | جستجو به صورت بازگشتی در پوشهها |
| `-E` | استفاده از الگوهای منظم پیشرفته |
| `--color=auto` | هایلایت کردن عبارت در خروجی |
---
## جمعبندی
با استفاده از ابزار قدرتمند `grep` و ترکیب آن با دستورات دیگر مانند `find`، میتوانید در عرض چند ثانیه اطلاعات دلخواه خود را در میان هزاران فایل متنی پیدا کنید. این مهارت یکی از مهمترین ابزارها برای مدیران سیستم، برنامهنویسان و تحلیلگران داده است.