البحث بشكل متكرر عن الملفات في الدلائل الحالية والفرعية باستخدام Wildcards على Linux

البحث بشكل متكرر عن الملفات في الدلائل الحالية والفرعية باستخدام Wildcards على Linux
البحث بشكل متكرر عن الملفات في الدلائل الحالية والفرعية باستخدام Wildcards على Linux

البحث الفعال عن الملفات في نظام Linux

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

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

يأمر وصف
find يبحث عن الملفات والدلائل ضمن التسلسل الهرمي للدليل
-name يطابق الملفات بأسمائها باستخدام نمط أحرف البدل
os.walk يقوم بإنشاء أسماء الملفات في شجرة الدليل عن طريق التحرك إما من أعلى إلى أسفل أو من أسفل إلى أعلى
fnmatch.fnmatch يختبر ما إذا كان اسم الملف أو السلسلة يتطابقان مع نمط حرف البدل
param يحدد معلمات البرامج النصية والوظائف الخاصة بـ PowerShell
Get-ChildItem استرداد العناصر في واحد أو أكثر من المواقع المحددة
-Recurse يوجه الأمر للبحث بشكل متكرر من خلال الدلائل
-Filter يقوم بتصفية العناصر باستخدام تعبير أحرف البدل

شرح تفصيلي للبرامج النصية للبحث عن الملفات العودية

يستخدم البرنامج النصي الأول برنامج نصي shell للعثور على الملفات الموجودة في الدليل الحالي وأدلته الفرعية بناءً على نمط حرف البدل المحدد. يبدأ بـ shebang لتحديد مترجم البرنامج النصي. يتحقق البرنامج النصي بعد ذلك مما إذا كان المستخدم قد قدم نمط حرف البدل كوسيطة باستخدام if [ $# -eq 0 ]. إذا لم يكن الأمر كذلك، فإنه يطالب المستخدم بالاستخدام الصحيح والخروج. إذا تم توفير نمط، يستخدم البرنامج النصي الأمر find مع خيار -type f للبحث عن الملفات وخيار -name لمطابقة نمط أحرف البدل. يعد الأمر find فعالاً للغاية في البحث عن الملفات بشكل متكرر في الأنظمة المستندة إلى Unix. ويختتم البرنامج النصي بـ exit 0 للإشارة إلى التنفيذ الناجح.

النص الثاني هو نص بايثون الذي يبحث أيضًا عن الملفات بشكل متكرر بناءً على نمط حرف البدل. يبدأ الأمر باستيراد وحدتي os و sys الضروريتين للتفاعل مع نظام التشغيل ومعالجة وسيطات سطر الأوامر. يتحقق البرنامج النصي مما إذا كان المستخدم قد قدم نمط حرف البدل؛ إذا لم يكن الأمر كذلك، فإنه يطبع الاستخدام الصحيح ويخرج. يتيح استخدام os.walk للبرنامج النصي اجتياز شجرة الدليل. بالنسبة لكل ملف يتم العثور عليه، يتحقق fnmatch.fnmatch مما إذا كان اسم الملف يطابق نمط حرف البدل، ويطبع مسارات الملفات المطابقة. يعد هذا البرنامج النصي مفيدًا للمستخدمين الذين يفضلون Python للبرمجة النصية ويحتاجون إلى مزيد من المرونة وسهولة القراءة في التعليمات البرمجية الخاصة بهم.

يستخدم البرنامج النصي الثالث PowerShell لأداء مهمة مماثلة على أنظمة Windows. يستخدم البرنامج النصي عبارة param لتحديد معلمة لنمط حرف البدل. إذا لم يتم توفير النمط، فإنه يطالب المستخدم بالاستخدام الصحيح. يقوم أمر Get-ChildItem cmdlet، مع علامة -Recurse، باسترداد العناصر الموجودة في مواقع محددة بشكل متكرر. تطبق المعلمة -Filter نمط حرف البدل لمطابقة ملفات محددة. يعد هذا البرنامج النصي مثاليًا للمستخدمين الذين يعملون في بيئات Windows، حيث يستفيد من إمكانات البرمجة النصية القوية والمتعددة الاستخدامات في PowerShell لإدارة الملفات والبحث عنها بكفاءة.

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

برمجة شل في لينكس

#!/bin/bash
# Script to recursively find files based on wildcard matching

# Check if the user has provided a wildcard pattern
if [ $# -eq 0 ]
then
  echo "Usage: $0 <wildcard-pattern>"
  exit 1
fi

# Find and print the files matching the pattern
find . -type f -name "$1"

exit 0

برنامج بايثون النصي للبحث عن الملفات العودية

البرمجة النصية بايثون

import os
import sys

# Check if the user has provided a wildcard pattern
if len(sys.argv) != 2:
    print("Usage: python script.py <wildcard-pattern>")
    sys.exit(1)

# Get the wildcard pattern from the command line argument
pattern = sys.argv[1]

# Walk through the directory tree
for root, dirs, files in os.walk("."):
    for file in files:
        if fnmatch.fnmatch(file, pattern):
            print(os.path.join(root, file))

PowerShell Script للبحث عن الملفات العودية

البرمجة النصية PowerShell

# Check if the user has provided a wildcard pattern
param (
    [string]$pattern
)

if (-not $pattern) {
    Write-Host "Usage: .\script.ps1 -pattern '<wildcard-pattern>'"
    exit 1
}

# Get the files matching the pattern
Get-ChildItem -Recurse -File -Filter $pattern

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

بالإضافة إلى الطرق الأساسية للبحث عن الملفات العودية التي تمت مناقشتها سابقًا، هناك العديد من التقنيات المتقدمة التي يمكن أن تعزز قدرات البحث عن الملفات على Linux. تتضمن إحدى هذه الطرق استخدام الأمر grep مع find للبحث عن الملفات التي تحتوي على أنماط نصية محددة. على سبيل المثال، يمكنك استخدام find . -اكتب f -name "*.txt" -exec grep "search_text" {} + لتحديد موقع جميع الملفات النصية التي تحتوي على السلسلة "search_text". يعد هذا مفيدًا بشكل خاص للمطورين ومسؤولي النظام الذين يحتاجون إلى البحث في قواعد التعليمات البرمجية الكبيرة أو ملفات السجل بكفاءة.

هناك أداة قوية أخرى للبحث المتكرر عن الملفات وهي fd، وهي بديل بسيط وسريع وسهل الاستخدام لـ find. fd يأتي مع إعدادات افتراضية معقولة ويوفر بناء جملة بديهيًا. على سبيل المثال، سيبحث الأمر fd "pattern" بشكل متكرر عن الملفات المطابقة للنمط، ويدعم التعبيرات العادية بشكل افتراضي. بالإضافة إلى ذلك، يعد fd أسرع من find في العديد من السيناريوهات بسبب اجتيازه لنظام الملفات المتوازي. بالنسبة للمستخدمين الذين يحتاجون إلى ميزات بحث متقدمة مع واجهة سهلة الاستخدام، يمكن أن يكون fd خيارًا ممتازًا.

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

  1. كيف يمكنني البحث عن الملفات ذات امتداد معين بشكل متكرر؟
  2. استخدم الأمر بحث . -type f -name "*.extension" حيث "extension" هو امتداد الملف الذي تبحث عنه.
  3. هل يمكنني البحث عن الملفات التي تم تعديلها خلال آخر 7 أيام؟
  4. نعم، استخدم الأمر find . -اكتب f -mtime -7 للبحث عن الملفات التي تم تعديلها خلال آخر 7 أيام.
  5. كيف يمكنني استبعاد أدلة معينة من البحث؟
  6. استخدم الخيار -Prune مع find لاستبعاد الدلائل، على سبيل المثال، find . -path "./exclude_dir" -Prune -o -type f -name "*.txt" -print.
  7. هل يمكن البحث عن الملفات حسب حجمها؟
  8. نعم، استخدم بحث . -اكتب f -size +100M للعثور على الملفات التي يزيد حجمها عن 100 ميجابايت.
  9. كيف أبحث عن الملفات ذات الأسماء المطابقة لتعبير عادي؟
  10. استخدم البحث . -اكتب f -regex ".*pattern.*" للبحث عن الملفات ذات الأسماء المطابقة للتعبير العادي.
  11. هل يمكنني الجمع بين معايير بحث متعددة؟
  12. نعم، يمكنك دمج المعايير باستخدام خيارات find، على سبيل المثال، find . -النوع f -الاسم "*.txt" -الحجم +10M.
  13. كيف يمكنني البحث عن الملفات المخفية بشكل متكرر؟
  14. استخدم البحث . -اكتب f -name ".*" للبحث عن الملفات المخفية.
  15. هل هناك طريقة لسرد الدلائل فقط؟
  16. نعم، استخدم بحث . -اكتب d لسرد كافة الدلائل بشكل متكرر.
  17. كيف يمكنني حساب عدد الملفات التي تم العثور عليها؟
  18. أضف | wc -l إلى الأمر find، على سبيل المثال، find . -اكتب f -اسم "*.txt" | مرحاض -ل.
  19. هل يمكنني تحديد عمق البحث؟
  20. نعم، استخدم خيار -maxdegree، على سبيل المثال، find . -العمق الأقصى 2 -النوع f لقصر البحث على مستويين عميقين.

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

بالإضافة إلى الطرق الأساسية للبحث عن الملفات العودية التي تمت مناقشتها سابقًا، هناك العديد من التقنيات المتقدمة التي يمكن أن تعزز قدرات البحث عن الملفات على Linux. تتضمن إحدى هذه الطرق استخدام grep الأمر بالاشتراك مع find للبحث عن الملفات التي تحتوي على أنماط نصية محددة. على سبيل المثال، يمكنك استخدام find . -type f -name "*.txt" -exec grep "search_text" {} + لتحديد موقع جميع الملفات النصية التي تحتوي على السلسلة "search_text". يعد هذا مفيدًا بشكل خاص للمطورين ومسؤولي النظام الذين يحتاجون إلى البحث في قواعد التعليمات البرمجية الكبيرة أو ملفات السجل بكفاءة.

أداة قوية أخرى للبحث عن الملفات العودية هي fd، بديل بسيط وسريع وسهل الاستخدام لـ find. fd يأتي مع إعدادات افتراضية معقولة ويوفر بناء جملة بديهيًا. على سبيل المثال، الأمر fd "pattern" سيبحث بشكل متكرر عن الملفات المطابقة للنمط، ويدعم التعبيرات العادية بشكل افتراضي. بالإضافة إلى ذلك، fd أسرع من find في العديد من السيناريوهات بسبب اجتياز نظام الملفات المتوازي. للمستخدمين الذين يحتاجون إلى ميزات بحث متقدمة مع واجهة سهلة الاستخدام، fd يمكن أن يكون اختيارا ممتازا.

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

يعد إتقان البحث المتكرر عن الملفات في Linux أمرًا بالغ الأهمية لإدارة الملفات بكفاءة، خاصة في هياكل الدليل المعقدة. من خلال الاستفادة من أدوات مثل find, grep، والبدائل مثل fd، يمكن للمستخدمين تحسين إنتاجيتهم بشكل كبير. يمكن أن يؤدي فهم هذه الأوامر واستخدامها إلى توفير الوقت وتبسيط المهام لكل من المستخدمين المبتدئين وذوي الخبرة، مما يضمن أن يصبح تحديد موقع الملفات عملية مباشرة.