بسم الله و الحمد لله و الصلاة و السلام على رسول الله و آله و أصحابه و من اتبع هداه.
*نظرة عن قرب حول أداة البحث عن الملفات - find
طبيعي أن كل مستخدم يعمل على ملفات على النظام و بشتى الصيغ.يمر الوقت و تتكاثر الملفات.خصوصا أن مشكل المساحة لم يعد مشكل.
الملفات اذا كانت قليلة يسهل تذكرها و تذكر أسماءها و أين توجد على الجهاز.مع مرور الوقت تصعب المهمة.
على جنو/لينكس توجد أدوات قوية تساعد على البحث عن الملفات أينما كانت و بأي صيغة و في وقت وجيز.
من هذه الأدوات أداة - find .
دورها البحث عن الملفات على النظام. و تكمن قوتها في الخصائص التي تضاف لها و أيضا تنسيقها مع أدوات أخرى مثل ؛ pip grep xargs -exec و غيرها.
** طريقة عمل الأداة :
***تشغيل الأداة بدون أي لاحقة يقوم بالبحث على جميع النظام و عن جميع الملفات :
find
لكي نقوم بالبحث في المسار الحالي. نضع نقطة بعد الأمر. مثال :
find .
النتيجة.هذا مجلد وضعت في ملفات عشوئيا خصيصا لهذا الموضوع.
.
./001.jpg
./002.jpg
./003.jpg
./004.jpg
./005.jpg ./AnotherPdf.pdf
./AuD12345io.mp3 ./001.mp3
./003.mp3 ./004.mp3
./005.mp3
./006.mp3
./007.mp3
./008.mp3
./009.mp3
./010.mp3
./001.pdf
./002.pdf
./003.pdf
./005.pdf
./006.pdf
./007.pdf
./008.pdf
./009.pdf
./010.pdf
./dir1
./dir1/001.pdf
./dir1/002.pdf
./dir1/003.pdf
./dir1/004.pdf
./dir1/005.pdf
./dir1/006.pdf
./dir1/007.pdf
./dir1/008.pdf
./dir1/009.pdf
./dir1/010.pdf
./dir2
./dir2/001.txt
./dir2/002.txt
./dir2/003.txt
./dir2/004.txt
./dir2/005.txt
./dir2/006.txt
./dir2/007.txt
./dir2/008.txt
./dir2/009.txt
./dir2/010.txt
./dir2/{D1..D5}
./dir3
./dir3/001.c
./dir3/002.c
./dir3/003.c
./dir3/004.c
./dir3/005.c
./dir3/006.c
./dir3/007.c
./dir3/008.c
./dir3/009.c
./dir3/010.c
./dir3/{D1..D5}
./dir4
./dir4/{D1..D5}
./dir5
./dir5/{D1..D5}
./dir5/Fo-L-d_Er1
./dir5/Fo-L-d_Er2
./dir5/Fo-L-d_Er3
./dir5/Fo-L-d_Er3/linuX_Test
./dir5/FiLE1
./dir5/FiLE2
./dir5/FiLE3
./dir5/FiLE4
./010.c
كما ترون بالنتيجة.الأداة بحث عن جميع الملفات.إذا أردنا أن نبحث فقط عن الملفات دون المجلدات.نطبق الآتي :
find . -type f
لاحقة f تحدد نوع الملفات و هي f(files)
لنبحث عن المجلدات نضع لاحقة d و هي إختصار لكلمة مجلد directory .
find . -type d
.
./dir1
./dir2
./dir2/{D1..D5}
./dir3
./dir3/{D1..D5}
./dir4
./dir4/{D1..D5}
./dir5
./dir5/{D1..D5}
./dir5/Fo-L-d_Er1
./dir5/Fo-L-d_Er2
./dir5/Fo-L-d_Er3
و لنبحث عن ملف معين.نضع لاحقة name- لتحديد إسم الملف.مثال:
find . -type f -name "file1"
./dir5/file1
بهذا المثال بحثنا عن ملف file1.و لكن يوجد بنفس المسار ملف آخر يحمل نفس الإسم و لكن فقط بحروف كبيرة.لتجاوز هذه المشكل و جعل find تعطينا جميع الملفات سواء حروف صغيرة أو كبيرة.نستخدم لاحقة iname- و حرف i إختصار لجملة case-insensative أو شيء مثل هذا.
مثال:
find . -type f -iname "file1"
./dir5/FiLE1
./dir5/file1
و لكي نبحث عن ملف ينتهي بصيغة معينة.نطبق هذه الحيلة و هي إضافة أحد رموز التعابير النمطية* و يفيد أي شيء. و في هذا المثال :
find . -type f -name "*.pdf"
./AnotherPdf.pdf
./001.pdf
./002.pdf
./003.pdf
./005.pdf
./006.pdf
./007.pdf
./008.pdf
./009.pdf
./010.pdf
./dir1/001.pdf
./dir1/002.pdf
./dir1/003.pdf
./dir1/004.pdf
./dir1/005.pdf
./dir1/006.pdf
./dir1/007.pdf
./dir1/008.pdf
./dir1/009.pdf
./dir1/010.pdf
كما يمكننا أيضا البحث عن المجلدات.
find . -type d -name "dir*"
./dir1
./dir2
./dir3
./dir4
./dir5
و لنبحث عن ملفات حسب وقت التعديل . نقوم بالتالي:
find . -type f -mmin -10
بهذا المثال الأداة ستبحث عن ملفات :
-type f
تم التعديل عليها في أقل من عشر دقائق
-mmin -10
-m modified
min minutes
-10 less than 10 min أقل من عشر دقائق
و يمكننا القيام بالعكس.البحث عن الملفات التي تم التعديل على في أكثر من عشر دقائق
find . -type f -mmin +10
كما يمكننا البحث بين توقيتين . مثال :
find . -type f -mmin +10 -mmin -30
بهذا المثال سنبحث عن الملفات التي تم التعديل عليها في أكثر من عشر دقائق و أقل من نصف ساعة.
*** كما يمكننا عوض البحث بإستخدام الدقائق فقط. نستخدم يوم أو أيام . و ذلك بإستخدام لاحقة mtime- .أمثلة :
بهذا المثال نبحث عن الملفات التي تم التعديل عليها في أقل من يوم.
find . -type f -mtime +1
في أكثر من يوم.
find . -type f -mtime +1 -mtime -20
بهذا المثال نبحث عن الملفات التي تم تعديلها في أكثر من يوم و أقل من عشرين يوم.
كما يمكننا إستخدام خاصية amin- atime- .و هي متعلقة بوقت دخول الملف إذا كن فهمي صحيح acces time .
و إستخدام أيضا cmin- و ctime- .و هي مرتبطة بتوقيت تغير أو التعديل على الملف change time.
- ويمكننا أيضا البحث عن الملفات بتحدد الحجم من كيلوباي أو ميجابايت أو جيجابايت . أمثلة :
find . -type f -size -30M
./001.jpg
./002.jpg
./003.jpg
./004.jpg
./005.jpg
./AnotherPdf.pdf
./AuD12345io.mp3
./001.mp3
./003.mp3
./004.mp3
./005.mp3
./006.mp3
./007.mp3
./008.mp3
./009.mp3
./010.mp3
./001.pdf
./002.pdf
./003.pdf
./005.pdf
./006.pdf
./007.pdf
./008.pdf
./009.pdf
./010.pdf
./dir1/001.pdf
./dir1/002.pdf
./dir1/003.pdf
./dir1/004.pdf
./dir1/005.pdf
./dir1/006.pdf
./dir1/007.pdf
./dir1/008.pdf
./dir1/009.pdf
./dir1/010.pdf
./dir2/001.txt
./dir2/002.txt
./dir2/003.txt
./dir2/004.txt
./dir2/005.txt
./dir2/006.txt
./dir2/007.txt
./dir2/008.txt
./dir2/009.txt
./dir2/010.txt
./dir3/001.c
./dir3/002.c
./dir3/003.c
./dir3/004.c
./dir3/005.c
./dir3/006.c
./dir3/007.c
./dir3/008.c
./dir3/009.c
./dir3/010.c
./dir5/Fo-L-d_Er3/linuX_Test
./dir5/FiLE1
./dir5/FiLE2
./dir5/FiLE3
./dir5/FiLE4
./dir5/file1
./dir5/file2
./dir5/file3
./010.c
./LCBT_AwkSed_006_Sed_Scripts.mov
بهذا المثال قمنا بالبحث عن الملفات التي حجمها أقل من ثلاثون ميجابايت .
find . -type f -size +30M
./1.Python_basics.7z
./LCBT_AwkSed_003_Sed_Intro.mov
أكثر من ثلاثون ميجابايت.
find . -type f -size +20M -size -40M
./1.Python_basics.7z
./LCBT_AwkSed_003_Sed_Intro.mov
./LCBT_AwkSed_006_Sed_Scripts.mov
ملفات حجمها أكثر من عشرون ميجابايت و أقل من أربعين ميجابايت.
لي تتمة حول الموضوع .و داخل نفس الموضوع على شكل رد أو ردين.