الفصل 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