it-swarm.asia

كيف يمكنني العثور على جميع الملفات بشكل متكرر في المجلدات الحالية والمجلدات الفرعية بناءً على مطابقة أحرف البدل؟

كيف يمكنني العثور على جميع الملفات بشكل متكرر في المجلدات الحالية والمجلدات الفرعية بناءً على مطابقة أحرف البدل؟

1491
john

استخدم find لذلك:

find . -name "foo*"

find يحتاج إلى نقطة بداية ، ويشير . (نقطة) إلى الدليل الحالي.

2189
tux21b

غالبًا ما يكون العثور على الأنابيب في grep أكثر ملاءمة ؛ يمنحك القوة الكاملة من التعبيرات العادية لمطابقة البدل التعسفي.

على سبيل المثال ، للعثور على جميع الملفات ذات السلسلة غير الحساسة لحالة الأحرف "foo" في اسم الملف:

~$ find . -print | grep -i foo
190
Paul Whipp

find سيجد كل الملفات التي تطابق نمط:

find . -name "*foo"

ومع ذلك ، إذا كنت تريد صورة:

tree -P "*foo"

أتمنى أن يساعدك هذا!

124
IslandCow
find <directory_path>  -type f -name "<wildcard-match>"

في مباراة البدل ، يمكنك توفير السلسلة التي ترغب في مطابقتها ، على سبيل المثال * .c (لجميع ملفات c)

22
P_Jain

إذا كان Shell يدعم خيارًا جديدًا للتزحلق (يمكن تمكينه بواسطة: shopt -s globstar) ، فيمكنك استخدام:

echo **/*foo*

للعثور على أي ملفات أو مجلدات بشكل متكرر. هذا مدعوم من Bash 4 و zsh وقذائف مماثلة.


شخصيا لدي وظيفة شل المحددة:

f() { find . -name "*$1*"; }

ملاحظة: يمكن لصق السطر أعلاه مباشرة إلى Shell أو إضافته إلى ملف ~/.bashrc الخاص بالمستخدم.

ثم يمكنني البحث عن أي ملفات عن طريق الكتابة:

f some_name

بدلاً من ذلك ، يمكنك استخدام fd utility مع بناء جملة بسيط ، على سبيل المثال fd pattern.

22
kenorb
find -L . -name "foo*"

في حالات قليلة ، كنت بحاجة إلى المعلمة -L للتعامل مع روابط الدليل الرمزية. افتراضيًا يتم تجاهل الروابط الرمزية. في تلك الحالات ، كان الأمر مربكًا تمامًا حيث أود تغيير الدليل إلى دليل فرعي ومشاهدة الملف المطابق للنمط لكن البحث لن يعيد اسم الملف. باستخدام -L يحل هذه المشكلة. خيارات الارتباط الرمزية لإيجاد هي -P -L -H

22
toddcscar

fdNAME_

في حالة ، findبطيء جدًا ، فجرب fdالأداة المساعدة - بديل بسيط وسريع لـ findالمكتوب بلغة Rust.

بناء الجملة:

fd PATTERN

عرض:

الصفحة الرئيسية: https://github.com/sharkdp/fd

16
kenorb

يمكنك استخدام:

# find . -type f  -name 'text_for_search'

إذا كنت تريد استخدام REGEX ، استخدم -iname

# find . -type f  -iname 'text_for_search'
9
user8848899

الطريقة الافتراضية للبحث عن الملف العودية ، والمتاحة في معظم الحالات هي

find . -name "filepattern"

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

man find

أو إذا كانت صفحات الرجل غير متوفرة في نظامك

find --help

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

Sudo updatedb

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

locate filename

أو للبحث عن اسم الملف أو الملف من داخل الدليل الحالي ، يمكنك كتابة:

 pwd | xargs -n 1 -I {} locate "filepattern"

سيبحث في قاعدة بيانات الملفات ويطبع بسرعة أسماء المسارات التي تطابق النمط الذي كتبته. للاطلاع على قائمة كاملة بخيارات تحديد الموقع ، اكتب: locate --help أو man locate

بالإضافة إلى ذلك ، يمكنك تكوين تحديد الموقع لتحديث قاعدة بياناتها في المواعيد المحددة من خلال وظيفة cron ، لذلك يبدو نموذج cron الذي يقوم بتحديث db في 1 ص:

0 1 * * * updatedb

تحتاج مهام cron هذه إلى التهيئة بواسطة root ، حيث إن updateb يحتاج إلى امتياز root ليجتاز نظام الملفات بالكامل.

6
Aleksandar Pavić

للبحث عن الملفات
find / -xdev -name settings.xml -> الكمبيوتر بالكامل
find ./ -xdev -name settings.xml -> الدليل الحالي والدليل الفرعي الخاص به

للملفات مع نوع التمديد

find . -type f -name "*.iso"
3
Alberto

سيؤدي الأمر التالي إلى سرد جميع الملفات ذات الاسم الدقيق "نقش" (على سبيل المثال) في المجلدات الحالية والمجلدات الفرعية.

find ./ -name "pattern"

3
anshul

أدناه أمر يساعد على البحث عن أي ملفات

1) بغض النظر عن القضية
2) النتيجة باستثناء المجلدات دون إذن
3) البحث من الجذر أو من المسار الذي تريده. تغيير/مع المسار الذي تفضله.

بناء الجملة:
العثور على -iname '' 2> & 1 | grep -v "تم رفض الإذن"

مثال

العثور على/- اسم "C * .xml" 2> & 1 | grep -v "تم رفض الإذن"

find / -iname '*C*.xml'   2>&1 | grep -v "Permission denied"
2
MukeshKoshyM

سيقوم هذا بالبحث في جميع الملفات ذات الصلة في الدلائل الحالية والفرعية ، مع حساب عدد الأسطر بشكل منفصل وكذلك كليًا:

find . -name "*.wanted" | xargs wc -l
1
Jay Yang

إذا كنت تريد البحث عن ملف خاص باستخدام wildcard ، فيمكنك استخدام التعليمات البرمجية التالية:

find . -type f -name "*.conf"

لنفترض أنك تريد البحث في كل ملفات .conf من هنا:

. يعني أن البحث بدأ من هنا (المكان الحالي)
-type يعني نوع عنصر البحث الموجود هنا هو الملف (f).
-name يعني أنك تريد البحث في الملفات مع * .conf أسماء.

1
Reza Harasani