نظرة عامة
يُعد العثور السريع على الملفات ومعالجتها في بيئة لينكس مهارة أساسية وضرورية لإدارة الخوادم والتطوير البرمجي. في هذا المقال، سنتعرف خطوة بخطوة من خلال التطبيق العملي على خيارات البحث الأساسية لأمر find، والبحث المستند إلى حجم الملف ووقت التعديل، بالإضافة إلى تنفيذ العمليات المجمعة (-exec) على نتائج البحث.
إعداد بيئة التطبيق العملي والبحث الأساسي بالاسم
لإنشاء دليل مخصص لتطبيق أمر find والانتقال إليه، نقوم بتنفيذ الأمر mkdir -p ~/find_lab/docs ~/find_lab/logs ~/find_lab/backup && cd ~/find_lab.

لإنشاء ملفات تجريبية متنوعة الامتدادات لاستخدامها في اختبارات البحث، نقوم بتنفيذ الأمر touch docs/app.log docs/guide.txt logs/error.log logs/access.log backup/data.bak.

يبحث الأمر find بشكل تكراري (recursive) عن جميع الملفات والأدلة تحت مسار الدليل المحدد وفقاً للشروط المحددة.
عند تنفيذ الأمر find . -name "*.log"، يتم البحث عن جميع الملفات التي تنتهي بالامتداد .log انطلاقاً من الدليل الحالي (.) وطباعتها مع مساراتها.
في هذه الأثناء، ولمنع الصدفة (shell) من توسيع حرف البدل (*) مسبقاً، يتم وضع نمط البحث داخل علامات اقتباس مزدوجة.
⚙️ [الخيارات الرئيسية]
-name : يبحث عن العناصر المطابقة لاسم الملف أو النمط المحدد مع مراعاة حالة الأحرف (حساس لحالة الأحرف).-iname : يبحث عن العناصر المطابقة لاسم الملف أو النمط المحدد بدون مراعاة حالة الأحرف (غير حساس لحالة الأحرف).-type : يحدد نوع الملف المراد البحث عنه (f للملفات العادية، و d للأدلة).-size : يبحث بناءً على حجم الملف (+ لأكبر من، و - لأقل من).-mtime : يبحث بناءً على وقت تعديل محتوى الملف (بوحدة الأيام).-empty : يبحث عن الملفات الفارغة أو الأدلة الفارغة.-exec : ينفذ أمر لينكس محدد بشكل مجمع على كل ملف يتم العثور عليه.-delete : يحذف الملفات المطابقة لشروط البحث على الفور.

للبحث عن اسم ملف دون مراعاة حالة الأحرف، نستخدم الخيار -iname وننفذ الأمر find . -iname "GUIDE.TXT".
حتى وإن كان اسم الملف الفعلي بأحرف صغيرة guide.txt، فإنه يتطابق مع شرط البحث بالأحرف الكبيرة ويتم عرض مسار الملف بنجاح.

البحث عن الملفات الكبيرة حسب النوع والحجم
لاختبار البحث بناءً على حجم الملف، نقوم بتنفيذ الأمر truncate -s 15M ~/find_lab/backup/large_archive.iso لإنشاء ملف تجريبي كبير بحجم 15 ميجابايت.

لمزيد من التدريب على مقارنة الأحجام، نقوم بتنفيذ الأمر truncate -s 2M ~/find_lab/logs/big_trace.log لإنشاء ملف سجل تجريبي بحجم 2 ميجابايت.

لتصفية مسارات الأدلة فقط واستبعاد الملفات العادية، نقوم بتنفيذ الأمر find ~/find_lab -type d باستخدام الخيار -type d.
تُعرض قائمة بجميع الأدلة الموجودة تحت المسار المحدد فقط بشكل منظم.

للبحث عن الملفات العادية (-type f) التي يتجاوز حجمها 10 ميجابايت (-size +10M) والتحقق من تفاصيلها في آنٍ واحد، نقوم بتنفيذ الأمر find ~/find_lab -type f -size +10M -exec ls -lh {} +.
يتم العثور على ملف large_archive.iso المطابق للشرط بحجم 15 ميجابايت، ويُطبع مع معلومات الأذونات والحجم بالتفصيل.

البحث عن الملفات المعدلة بناءً على شرط الوقت (mtime/mmin)
للتدريب على البحث عن الملفات حسب الوقت المنقضي، نقوم بتنفيذ الأمر touch -d "2 days ago" ~/find_lab/backup/old_backup.tar لإنشاء ملف تجريبي تم تعديله قبل يومين.

لاختبار البحث عن أحدث الملفات المعدلة، نقوم بتنفيذ الأمر touch ~/find_lab/logs/recent.log لإنشاء ملف تجريبي يحمل الطابع الزمني للوقت الحالي.

للبحث عن الملفات العادية التي تم تعديلها خلال آخر 24 ساعة، نقوم بتنفيذ الأمر find ~/find_lab -type f -mtime -1 مع تطبيق الخيار -mtime -1.
تُعرض قائمة بجميع الملفات التي تم إنشاؤها أو تعديلها خلال الوقت المحدد (24 ساعة) بنجاح.

للبحث عن الملفات القديمة التي مضى على تعديلها أكثر من 24 ساعة (يوم واحد)، نقوم بتنفيذ الأمر find ~/find_lab -type f -mtime +1 باستخدام الخيار -mtime +1.
يتم تصفية وعرض ملف old_backup.tar الذي تم إنشاؤه بتاريخ يسبق يومين فقط وبشكل دقيق.

التحكم المجمع في نتائج البحث: خيار -exec وعمليات الحذف
للتدريب على التحكم المجمع وتغيير الأذونات، نقوم بتنفيذ الأمر mkdir -p ~/find_lab/temp && touch ~/find_lab/temp/cache1.tmp ~/find_lab/temp/cache2.tmp لإنشاء دليل مؤقت وملفات مؤقتة بداخله.

لتغيير أذونات الوصول لجميع الملفات التي تحمل الامتداد .tmp دفعة واحدة إلى 644، نطبق الخيار -exec وننفذ الأمر find ~/find_lab/temp -name "*.tmp" -exec chmod 644 {} \;.
يتم استبدال الرمز {} بمسار كل ملف يتم العثور عليه، بينما يشير \; إلى نهاية الأمر الممرر إلى صيغة -exec.

للتحقق من تطبيق تغيير الأذونات بشكل صحيح، نقوم بتنفيذ الأمر ls -l ~/find_lab/temp.
تُظهر النتيجة أنه قد تم تعديل كلا الملفين المؤقتين ليصبحا بأذونات القراءة والكتابة (-rw-r--r--، 644).

لحذف الملفات التي تطابق الامتداد .tmp دفعة واحدة، نقوم بالربط مع الأمر rm -f وتنفيذ find ~/find_lab/temp -name "*.tmp" -exec rm -f {} \;.
تتم إزالة الملفات المستهدفة دفعة واحدة دون الحاجة إلى خطوات تأكيد إضافية.

للتحقق النهائي من حذف جميع الملفات المؤقتة بنجاح، نقوم بتنفيذ الأمر ls -la ~/find_lab/temp.
يتبين بقاء الدليل الحالي (.) والدليل الأب (..) فقط، وحذف جميع الملفات المؤقتة التي تم إنشاؤها بالكامل.

قدمنا في هذا الدليل ملخصاً شاملاً يبدأ من خيارات البحث الأساسية لأمر find في لينكس وصولاً إلى تقنيات المعالجة المجمعة التي يمكن الاستفادة منها مباشرة في بيئات العمل الحقيقية.
ندعوكم لتجربة دمج هذه الخيارات وفقاً لمتطلبات كل موقف لإنجاز مهام استكشاف الملفات وإدارتها بكفاءة أعلى.