40 من أفضل الأمثلة على أمر البحث في Linux

يعد أمر Linux find أداة قوية تمكن مسؤولي النظام من تحديد موقع الملفات والأدلة وإدارتها بناءً على مجموعة واسعة من معايير البحث. يمكنه العثور على الدلائل والملفات حسب أسمائها أو نوعها أو امتدادها أو حجمها أو أذوناتها ، إلخ.

إلى جانب تحديد موقع الملفات والدلائل ، يتيح لك الجمع بين أمر البحث مع الآخرين اتخاذ إجراء بشأن النتائج. تتيح إضافة الخيار -exec لمسؤولي النظام تشغيل أوامر خارجية وتنفيذ إجراءات مثل نسخ أو نقل أو حذف أو تغيير أذونات الملفات المطابقة للمعايير المحددة مثل الحجم والاسم وما إلى ذلك.

في هذه المقالة ، سنبدأ بشرح أوامر البحث الأساسية في Linux مع أمثلة. سيوضح لك هذا كيفية العثور على الملفات والأدلة. سنعرض لك بعد ذلك كيفية استخدام الخيار -exec للعمل على الملفات أو الدلائل بناءً على حجمها وأذوناتها وما إلى ذلك.

الصيغة العامة لأمر البحث هي

find {path} {name -of-file or dir-to-search} {action-to-take}

أين،

  • المسار يحدد الدليل.
  • اسم الملف أو dir-to-search: اسم الملف أو الدليل المراد البحث عنه
  • الإجراء الواجب اتخاذه: مثل النسخ والحذف والنقل وما إلى ذلك.

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

جدول المحتويات

البحث عن الملفات والدلائل

ابحث عن ملفات محددة بالاسم أو الامتداد

للبحث عن ملف معين ، قم بتشغيل الأمر التالي من الجذر (/). يحتوي الأمر على الاسم الدقيق للملف الذي تبحث عنه.

find . -name file22.txt

انتاج |

./test/file22.txt
./sales/file22.txt

يرجى ملاحظة أن النتائج تشمل المسار. هذا مهم إذا كنت لا تعرف الدليل حيث يوجد الملف ، أو عندما يكون في أكثر من مكان.

يمكنك أيضًا البحث عن الملف في دليل آخر بينما لا تزال في الموقع الحالي. في هذه الحالة ، تحتاج إلى توفير مسار الدليل الذي تريد البحث فيه.

find ./test -name file22.txt

البحث عن ملفات محددة في دليل آخر

في حالتنا ، سنبحث عن كل من يبدأ بملف الأحرف في دليل الاختبار.

find ./test -name file*

انتاج |

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

ابحث عن الملفات حسب الامتداد

للعثور على ملف في Linux بامتداد معين ، قم بإضافته إلى الأمر.

find . -name *.txt

انتاج |

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

البحث عن الملفات والأدلة بالاسم

استخدم الأمر أدناه للبحث عن الملفات والأدلة التي تبدأ بالأحرف qa. في جهاز الكمبيوتر لدينا ، لدينا ملفات qatree.txt و qa.txt بالإضافة إلى دليل بالاسم qa.

إذا قمنا بتشغيل الأمر ؛

find ./ -name "qa*"

تقوم بإرجاع الناتج التالي

./test/qatree.pdf
./test/qa.txt
./home/qa

يقوم الأمر بإرجاع كل من الملفات والدلائل المطابقة لمعايير البحث. للعثور على الملفات أو الدلائل فقط ، تحتاج إلى تحديد ذلك في الأمر.

  كيفية إعداد Rsync على نظام Linux

البحث عن الملفات أو الدلائل فقط

للملفات فقط ، استخدم مفتاح التبديل من النوع f.

الملفات فقط

find ./ -type f -name "qa*"

انتاج |

./test/qatree.pdf
./test/qa.txt

الدلائل فقط

أضف خيار النوع d لتحديد موقع الدلائل فقط.

find ./ -type d -name "qa*"

انتاج |

./home/qa

أمر البحث غير حساس لحالة الأحرف

جميع عمليات البحث باستخدام مفتاح -name حساسة لحالة الأحرف ولن تعطي نتائج بأحرف كبيرة. للحصول على جميع الحالات ، استخدم خيار -iname.

find ./ -iname "qa*"

انتاج |

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

ابحث عن ملف من عدة أدلة

للعثور على الملفات في دلائل مختلفة ، أضف مساراتها في الأمر. في حالتنا ، سوف نتحقق من الاختبار والأدلة الرقمية.

find ./test ./numeric -name file22.txt -type f

انتاج |

./test/file22.txt
/root/numeric/file22.txt

ابحث عن ملفات متعددة بامتدادات مختلفة من جميع الدلائل

يمكنك استخدام الأمر find لتحديد موقع ملفات متعددة تشترك في الامتدادات المختلفة مثل * .doc و * .txt * .pdf وما إلى ذلك. يمكن القيام بذلك بشكل منفصل ، أو امتداد واحد في كل مرة ، أو باستخدام أمر واحد فقط يتضمن جميع الامتدادات المطلوبة.

تجد . -type f (-name “* .txt” -o -name “* .pdf” -o -name “* .doc”)

انتاج

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

ابحث عن الملفات التي تحتوي على نص معين

في بعض الأحيان ، تريد الوصول إلى ملف يحتوي على نص معين ولكن لا يمكنك تذكر اسم الملف أو موقعه. يسمح لك هذا الأمر بالعثور على جميع الملفات التي تحتوي على النص الهدف الخاص بك.

للبحث عن جميع الملفات التي تحتوي على كلمة hyperconvergence ”، استخدم ؛

find / -type f -exec grep -l -i "hyperconvergence" {} ;

انتاج |

/root/numeric/hci
/root/HCIP

يمكّن الخيار –i الأمر من تجاهل الحالات وسيجد النص سواء كان بأحرف كبيرة أم لا ، أي التقارب المفرط ، التقارب المفرط ، إلخ.

للبحث عن الملفات في دليل معين ، ما عليك سوى إضافتها إلى الأمر

find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;

انتاج |

./numeric/hci

استكشف المزيد من أمثلة أوامر grep.

البحث عن الملفات والدلائل على أساس الحجم

يمكنك العثور على كافة الملفات أو الدلائل التي تكون أصغر أو تساوي أو أكبر من حجم معين ، ضمن نطاق معين أو فارغة. استخدم تنسيق الحجم المناسب بناءً على نوع الملفات أو الدلائل التي تبحث عنها.

تشمل خيارات الحجم ؛

ج – بايت

ك – كيلو بايت

م – ميغا بايت

G – جيجا بايت

ابحث عن ملفات ذات حجم معين – يساوي 30 ميغا بايت

للبحث ، ابحث عن جميع الملفات بحجم 30 ميغا بايت

find / -size 30M

البحث عن ملفات أكبر من الحجم المحدد

find -size +2M

انتاج |

. /Downloads/ubuntu18043.iso 
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

ابحث عن الملفات التي يقل حجمها عن 10 ميجابايت في الدليل الحالي

find . -type f -size -10M

ابحث عن ملفات بأحجام تتراوح بين 100-200 ميغا بايت

عند البحث عن ملفات ضمن نطاق معين مثل ما بين 100 و 200 ميغا بايت

find / -size +100M -size -200M

ابحث عن أدلة أكبر من 20 كيلوبايت

اعثر / -النوع d-size + 20k

البحث عن الملفات والأدلة الفارغة.

الملفات

البحث / -النوع f-الحجم 0

أو

find ./ -type f –empty

الدلائل

find ./ -type d –empty

البحث عن الملفات حسب العمر أو وقت التعديل

البحث عن الملفات الأقدم من n من الأيام

find /path/ -type f -name '*.txt' -mtime +8

سيبحث -mtime +8 عن ملفات txt الأقدم من 8 أيام.

حسب تاريخ التعديل

سيبحث هذا عن الملفات التي تم تعديلها خلال آخر 17 ساعة

find . -mtime -17 -type f 

يبحث عن الدلائل التي تم تعديلها خلال آخر 10 أيام

find . -mtime -10 -type d 

البحث عن الملفات على أساس الوصول أو التعديل

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

لمشاهدة الملفات التي لم يتم الوصول إليها خلال آخر 10 أيام في الدليل الرئيسي.

find /home -atime +10

تم الوصول إلى الملفات قبل 10 أيام بالضبط

find /home -atime 10

تم الوصول إليه خلال آخر 10 أيام

find /home -atime -10

ابحث عن الملفات التي تم تعديلها خلال آخر ن أيام

يمكنك أيضًا البحث عن الملفات الموجودة في الدليل / home الذي تم تعديله خلال آخر 10 أيام باستخدام الأمر ؛

find /home -mtime -10 

البحث عن الملفات التي تم تعديلها خلال فترة محددة.

على سبيل المثال ، تم تعديل جميع الملفات منذ 6 إلى 15 يومًا في الدليل الرئيسي.

find /home -type f -mtime +6 -mtime -15

الملفات والأدلة التي تم الوصول إليها خلال آخر 10 دقائق

للعثور على الملفات التي تم الوصول إليها خلال آخر 10 دقائق ، استخدم الخيار -amin.

find . -amin -10 -type f

انتاج |

./.bash_history
./[email protected]:~#

الدلائل التي تم الوصول إليها خلال آخر 10 دقائق

find . -amin -10 -type d

ابحث عن الملفات التي تطابق أذونات محددة

بناء الجملة

$ find -perm mode

حيث يكون الوضع هو الإذن الذي يكون إما رقميًا مثل 644 ، 655 ، 700 ، 777 ، إلخ ، أو أحرف مثل u = x ، a = r + x ، إلخ.

  كيفية تشغيل Gmail على سطح مكتب Linux باستخدام Wavebox

يمكنك تحديد الوضع بالطرق الثلاث المختلفة التالية.

  • بدون بادئة عندما تريد البحث عن الملفات ذات الأذونات المحددة المحددة.
  • مع “-” للملفات ذات الإذن المحدد على الأقل. يؤدي هذا إلى إرجاع الملفات ذات الأذونات الأعلى المحددة بالإضافة إلى الأذونات الإضافية.
  • يتطلب استخدام “/” تحديد المالك أو المجموعة مع الإذن بالملف.
  • البحث عن الملفات بإذن 777

    find -perm 777

    انتاج |

    ./file1

    ابحث عن الملفات التي تحتوي على 766 على الأقل
    تجد -النيرة -766

    انتاج |

    ./file2
    ./file1

    يبحث الأمر عن جميع الملفات التي يكون امتداد الملف

    • مالك الملف لديه أذونات القراءة / الكتابة / التنفيذ.
    • المجموعة لديها أذونات القراءة / الكتابة
    • البعض الآخر لديه إذن القراءة / الكتابة

    على هذا النحو ، تقوم بإرجاع ملفين يستوفيان هذا المعيار – file1 و file2. لا تحتاج الملفات إلى 766 إذنًا دقيقًا ويمكن أن يكون لها أذونات إضافية طالما يجب أن تحتوي على الأذونات المحددة على الأقل.

    البحث عن الملفات التي يكتبها المالك

    سنستخدم الآن “/” للبحث عن الملفات التي يمكن كتابتها من قبل مالكها أو مجموعتها أو غيرهم.

    find -perm /222
    .
    ./file2
    ./file3
    ./file1

    ما سبق يبحث عن الملفات التي يمكن لمالكها أو مجموعتها كتابتها.
    يؤدي هذا إلى إرجاع الملفات القابلة للكتابة بواسطة أي منهما وليس بالضرورة كليهما. لمشاهدة الملفات ، حيث يكون لكل منهما أذونات قابلة للكتابة ، استخدم البادئة -.

    find -perm -220

    انتاج |

    ./file2
    ./file1

    البحث عن الملفات التي يملكها المستخدم

    البحث عن جميع الملفات التي يملكها جاك

    find /home -user jack

    انتاج |

    /home/jack
    /home/jack/examples.desktop
    /home/jack/.gnupg
    /home/jack/.gnupg/private-keys-v1.d
    /home/jack/ans.cgi

    البحث عن ملفات محددة يملكها مستخدم

    البحث عن جميع الملفات النصية التي يملكها جاك

    find /home -user jack -iname "*.txt"

    انتاج |

    /home/jack/docs/file32.txt

    البحث عن الملفات والأدلة وإدراجها مع أذوناتها

    find -name "*.conf" | ls -l

    انتاج |

    total 120
    drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
    drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
    drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
    drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
    -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

    ابحث عن النتائج واعمل عليها

    في هذا القسم ، سننظر في كيفية التصرف على الملفات التي تطابق النمط المحدد في الأمر find.

    ابحث عن الملفات وقم بتغيير الأذونات

    البحث عن أذونات أنواع معينة من الملفات وتغييرها. في حالتنا ، سنعمل مع ملفات PHP بأذونات مختلفة كما هو موضح أدناه.

    [email protected]:~/ver$ ls -la
    
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

    سنبحث الآن عن جميع ملفات PHP (أعلاه) ونستبدل أذوناتهم بـ 755

    find ver -name "*.php" -type f -exec chmod 755 {} ;

    يبحث الأمر عن ملفات PHP في دليل ver ثم يعين إذنهم على 755 (rwxr-xr-x)

    نتائج

    [email protected]:~/ver$ ls -la
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

    البحث عن أذونات الملف والدليل وتغييرها

    ابحث عن الملفات ذات الأذونات 644 وقم بتغييرها إلى 655 إذنًا

    find . -type f -perm 644 -exec chmod 655 {} ;

    يمكنك أيضًا البحث عن أدلة ذات أذونات 644 واستبدالها بـ 755.

    find . -type d -perm 644

    انتاج |

    ./docs   

    يحتوي مجلد المستندات على أذونات 644

    drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

    لضبطه على 755 ، نجري

    find . -type d -perm 644 -exec chmod 755 {} ;

    الآن يمكننا التحقق مرة أخرى لنرى بالضبط 755

    find . -type d -perm 755

    انتاج |
    .
    ./docs

    من الأعلى يمكننا أن نرى أدلة الجذر والمستندات لديها 755 إذنًا.

    يعطي الأمر Ls –la التفاصيل التالية

    drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

    البحث عن الملفات أو الدلائل ونسخها

    ابحث عن ملف معين وانسخه إلى دليل

    سيجد الأمر أدناه ملف file22.txt ونسخه إلى دليل ~ / tmp / images.

    find -iname file22.txt -exec cp {} ~/tmp/images ;

    ابحث عن نوع واحد من الملفات وانسخه إلى دليل

    للعثور على ملفات مثل الصور بامتداد jpg في الدليل الحالي ونسخها إلى موقع مختلف مثل مجلد الصور ، استخدم ؛

    find -iname '*.jpg' -exec cp {} ~/tmp/images ;

    سيعثر هذا على جميع ملفات jpg ونسخها إلى مجلد الصور ~ / tmp /.

    ابحث عن ملف واحد وانسخه إلى العديد من الدلائل

    البحث عن ونسخ واحد إلى عدة دلائل.

    find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;

    سيجد هذا الملف ملف hci ونسخه إلى المجلدات الثلاثة / tmp / dir1 / / tmp / dir2 / و $ HOME / 3 /

      5 طرق لتحرير ملف PDF على نظام Linux

    البحث عن الملفات ونقلها إلى دليل مختلف

    لنقل ملف معروف من دليل إلى آخر. لنقل ملف universal.php ؛

    find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;

    ابحث عن الملفات وانقلها بامتداد معين إلى مجلد مختلف

    find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

    ابحث عن ملفات معينة وانتقل إلى مجلد مختلف محدد

    find -type f -name uni*.* -exec mv {} ~/unifiles/ ;

    يبحث الأمر عن جميع الملفات ذات الأسماء التي تبدأ بـ uni ولها أي امتداد. ثم ينقلهم إلى الدليل / unifiles /

    البحث عن الملفات ونقلها على أساس العمر

    ابحث عن الملفات التي مضى عليها أكثر من أيام محددة وانقلها إلى موقع مختلف مثل الأرشيف.

    find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;

    سيبحث هذا عن ملفات pdf التي مضى عليها أكثر من 20 يومًا وينقلها إلى دليل backup1.

    البحث عن الملفات والدلائل وحذفها

    صيغة البحث عن الملفات أو الدلائل وإزالتها في الدليل الحالي هي

    تجد . -type f -name “ملف للحذف” -exec rm -f {} ؛ لحذف الملفات فقط أو

    تجد . -type d -name “dir-to-delete” -exec rm -rf {} ؛ لحذف الدلائل فقط

    البحث عن ملفات محددة وحذفها فقط

    للبحث عن الملفات وحذفها بدءًا من til ، استخدم ؛

    find . -type f -name "til*" -exec rm {} ; 

    للعثور على الدلائل وحذفها بدءًا من til

    find . -type d -name "til*" -exec rm {} ;

    قم بإزالة كل من الملفات والدلائل

    find . -name "til*" -exec rm -rf {} ; 

    سيؤدي هذا إلى إزالة كل من الملفات والمجلدات بدءًا من الأحرف حتى.

    حذف حسب التمديد

    فيما يلي كيفية تحديد موقع وحذف جميع ملفات txt في الدليل الحالي. استبدل النص بامتداد آخر مثل bak أو pdf أو أي امتداد آخر تريد إزالته.

    find . -type f -name "*.txt" -exec rm -f {} ;

    إذا كنت تريد أن يطلب منك النظام التأكيد قبل حذف كل ملف ، أضف الخيار -i على النحو التالي.

    find . -type f -name "*.txt" -exec rm -i {} ;

    انتاج |

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

    بشكل افتراضي ، لن يزيل -rm الدلائل وتحتاج إلى استخدام الخيار –r لضمان الإزالة المتكررة. هذا يضمن حذف الدلائل الفارغة وتلك التي تحتوي على ملفات. يفرض الخيار -f الإزالة ويستخدم لكل من الملفات والدلائل.

    البحث عن الملفات التي مضى عليها أكثر من n وحذفها

    البحث عن ملفات النسخ الاحتياطي التي مضى عليها أكثر من 20 يومًا من الدليل الحالي وحذفها.

    find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

    سيؤدي هذا إلى حذف جميع ملفات .bak الأقدم من 20 يومًا.

    البحث عن الدلائل وحذفها فقط

    لحذف دليل يسمى dir22

    find . -type d -name dir22 -exec rm -rf {} ;

    تأكد من مطابقة حالة اسم الدليل أو استخدم الخيار -iname.

    find . -type d -iname Dir22 -exec rm -rf {} ;

    يزيل كل من Dir22 و dir22

    للتأكيد قبل الحذف ، استخدم الخيار -i.

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

    انتاج |
    rm: إزالة الدليل “./Dir22″؟ ن
    rm: إزالة الدليل “./dir22″؟ ذ

    في حالتنا ، قمنا بكتابة n للدليل Dir22 الذي لن يتم حذفه و y لـ dir22 الذي سيتم إزالته الآن.

    البحث عن وإزالة الملفات الفارغة

    يمكنك استخدام أي من الأوامر التالية لتحديد موقع الملفات الفارغة وحذفها تلقائيًا.

    find ./ -type f -size 0 -exec rm -f {} ;

    أو
    البحث ./ -النوع f-الحجم 0 | xargs rm -f
    أو
    find ./ -type f-size 0 – حذف

    البحث عن الدلائل الفارغة وإزالتها

    لإزالة الدلائل الفارغة سنستخدم الخيار d.

    find ./ -type d -empty -exec rmdir {} ;

    بديل آخر هو استخدام الحذف بدلاً من الإزالة.

    find ./ -type d -empty -delete

    يرجى ملاحظة أن حذف النظام أو الملفات الهامة من جهاز الكمبيوتر الخاص بك يمكن أن يؤدي إلى إتلاف نظام التشغيل أو التطبيقات أو يؤدي إلى فقدان بياناتك المهمة.

    لتجنب عمليات الحذف غير المقصودة ، من الأفضل استخدام حساب مستخدم غير أساسي. تأكد أيضًا من قيامك بحذف الملفات الصحيحة غير المفيدة وأن لديك نسخة احتياطية من جميع ملفات البيانات الخاصة بك في حالة حدوث ذلك.

    ماذا بعد؟

    انطلق وجرب ما ورد أعلاه ، اعثر على أوامر Linux في معملك أو في بيئة عدم الإنتاج. تحقق مما إذا كان يمكنك استخدام بعضها لأتمتة تنظيف نظام الملفات باستخدام Crontab. ولإتقان لينكس ، تحقق من هذا دورة على شبكة الإنترنت.