انتقل إلى المحتوى الرئيسي

الفصل 3.6 - البحث عن الملفات

أهداف التعلم​

في نهاية هذا الفصل، ستكون قادرًا على:

  • استخدام find بفعالية
  • استخدام locate للبحث السريع
  • البحث عن طريق المحتوى باستخدام grep
  • دمج أدوات البحث

find - بحث قوي​

الصيغة الأساسية​

find [chemin] [critères] [actions]

البحث بالاسم​

# بالاسم الدقيق
find /home -name "fichier.txt"

# غير حساس لحالة الأحرف
find /home -iname "fichier.txt"

# الأنماط
find /home -name "*.txt"
find /home -name "file*"
find /home -name "*log*"

البحث بالنوع​

# الملفات فقط
find /home -type f

# المجلدات فقط
find /home -type d

# الروابط الرمزية
find /home -type l

# الأنواع الخاصة
find /dev -type b # Block devices
find /dev -type c # Character devices

البحث بالحجم​

# أكثر من 100MB
find /home -size +100M

# أقل من 1KB
find /home -size -1k

# بالضبط 50MB
find /home -size 50M

# الوحدات: c (bytes), k, M, G

البحث بالتاريخ​

# معدل الأسبوع الماضي
find /home -mtime -7

# معدل منذ أكثر من 30 يومًا
find /home -mtime +30

# معدل الساعة الماضية
find /home -mmin -60

# حسب تاريخ الوصول
find /home -atime -7

# حسب تاريخ الإنشاء
find /home -ctime -7

البحث بالأذونات​

# الملفات القابلة للتنفيذ
find /home -type f -perm /111

# الملفات ذات الأذونات المحددة
find /home -perm 644

# الملفات بدون أذونات للآخرين
find /home ! -perm -o=r

البحث بالمالك​

# حسب المستخدم
find /home -user user1

# حسب المجموعة
find /home -group developers

# حسب UID/GID
find /home -uid 1000
find /home -gid 1000

الإجراءات مع find​

# العرض (افتراضي)
find /home -name "*.txt"

# تنفيذ أمر
find /home -name "*.txt" -exec ls -lh {} \;
find /home -name "*.txt" -exec rm {} \;

# الحذف مباشرة
find /home -name "*.tmp" -delete

# النسخ
find /home -name "*.txt" -exec cp {} /backup/ \;

# مع التأكيد
find /home -name "*.txt" -ok rm {} \;

التوليفات​

# ملفات .log المعدلة الأسبوع الماضي، أكثر من 10MB
find /var/log -name "*.log" -mtime -7 -size +10M

# ملفات .txt المملوكة لـ user1، قابلة للتنفيذ
find /home -name "*.txt" -user user1 -perm /111

# المجلدات الفارغة
find /home -type d -empty

locate - بحث سريع​

الاستخدام​

# بحث بسيط
locate fichier.txt

# غير حساس لحالة الأحرف
locate -i fichier

# تحديد عدد النتائج
locate -l 20 fichier

# الأنماط
locate "*.txt"
locate "file*"

تحديث القاعدة​

# تحديث قاعدة البيانات
sudo updatedb

# عرض القواعد المستخدمة
locate -S

المزايا:

  • سريع جدًا
  • فهرس مسبق البناء

العيوب:

  • يتطلب تحديث updatedb بانتظام
  • قد لا يجد الملفات الحديثة

grep - البحث في المحتوى​

البحث عن نص​

# بحث بسيط
grep "motif" fichier.txt

# غير حساس لحالة الأحرف
grep -i "motif" fichier.txt

# عرض أرقام السطور
grep -n "motif" fichier.txt

# عرض أسماء الملفات فقط
grep -l "motif" *.txt

# بحث تكراري
grep -r "motif" /home/user1/

# بحث عكسي (السطور بدون النمط)
grep -v "motif" fichier.txt

الأنماط المتقدمة​

# التعبيرات العادية
grep "^début" fichier.txt # يبدأ بـ
grep "fin$" fichier.txt # ينتهي بـ
grep "motif1\|motif2" fichier.txt # أو
grep "[0-9]" fichier.txt # أرقام
grep "[a-z]" fichier.txt # حروف صغيرة

# بحث موسع
grep -E "motif1|motif2" fichier.txt

الخيارات المفيدة​

# السياق (السطور قبل/بعد)
grep -C 3 "motif" fichier.txt # 3 سطور قبل/بعد
grep -B 2 "motif" fichier.txt # 2 سطر قبل
grep -A 2 "motif" fichier.txt # 2 سطر بعد

# عد التكرارات
grep -c "motif" fichier.txt

# الألوان
grep --color=auto "motif" fichier.txt

دمج الأدوات​

find + grep​

# البحث في جميع ملفات .txt
find /home -name "*.txt" -exec grep -l "motif" {} \;

# البحث والعرض مع السياق
find /home -name "*.log" -exec grep -Hn "ERROR" {} \;

find + xargs​

# أكثر فعالية من -exec
find /home -name "*.txt" | xargs grep "motif"
find /home -name "*.txt" -print0 | xargs -0 grep "motif"

خط أنابيب معقد​

# إيجاد ملفات .log، البحث عن ERROR، العد
find /var/log -name "*.log" -exec grep "ERROR" {} \; | wc -l

# إيجاد ملفات معدلة حديثًا، البحث عن النمط
find /home -mtime -1 -type f -exec grep -l "motif" {} \;

which و whereis​

which​

يجد موقع الأمر:

which ls
which python
which git

whereis​

يجد الثنائي، المصدر والمان:

whereis ls
whereis python
# يعرض: الثنائي، المصدر، صفحات المان

ملخص​

في هذا الفصل، تعلمت:

find: بحث قوي بالاسم، النوع، الحجم، التاريخ، الأذونات
locate: بحث سريع مع الفهرس
grep: البحث في محتوى الملفات
which/whereis: إيجاد الأوامر
التوليفات: find + grep، find + xargs للفعالية


الخطوات التالية​

الفصل 3.7: الروابط الرمزية والصلبة
الفصل 3.8: أنواع أنظمة الملفات


تم إنشاء الفصل في: ديسمبر 2024