متعب من استخدام نفس الأدوات التي تستخدمها على جهازك، مثل grep؟ لماذا تتفق؟ يمكن أن تساعد العديد من بدائل grep في Windows في البحث بدقة عن ما تبحث عنه.
في هذا البرنامج التعليمي، ستتعلم كيف تجعل هذه البدائل لـ grep من الممكن البحث في الملفات بشكل أسرع والعثور على المعلومات التي تحتاج إليها في لحظة.
تابع وكن صديقًا لأدوات البحث القوية!
المتطلبات المسبقة
يتضمن هذا البرنامج التعليمي عروضًا تفاعلية. لمتابعة الدروس، تأكد من توفر ما يلي:
- A Window machine – This tutorial uses Windows 10 PC, but any version of Windows will suffice.
- PowerShell – يستخدم هذا البرنامج التعليمي PowerShell 7.2.8.
- scoop – يستخدم هذا البرنامج التعليمي scoop v0.3.1.
البحث عن سلاسل نصية محددة (findstr
) داخل الملفات
القدرة على اكتشاف السلاسل النصية المحددة (بأنماط معينة) التي تبحث عنها في ملف يساعد كثيرًا في سير العمل الخاص بك. لكن كيف؟ استخدم أمر الأوامر findstr
في Windows، الذي يتيح لك البحث عن سلاسل نصية محددة داخل الملفات.
findstr
يُستخدم غالبًا كما يُستخدم grep
في نظام Windows، حيث يتمتع بوظائف مماثلة لأمر grep
في نظام Unix. ما هي فوائد استخدام findstr
؟ أحد الأمثلة هو أنه مدمج في أي نظام تشغيل Windows (OS) – لا يلزم تثبيت برامج إضافية.
للبحث عن سلاسل نصية معينة في ملف، اتبع هذه الخطوات:
أنشئ ملف نصي باستخدام محرر النصوص المفضل لديك، سمِّيه notes.txt، واملأ المحتوى أدناه إلى الملف.
Hello, world. This is an example of a text file.
I am writing some notes in this file.
Here are some keywords to search for: apple banana cherry.
الآن، افتح PowerShell كـ مسؤول وقم بتشغيل الأمر أدناه للبحث عن سلاسل نصية (findstr
) وفقًا لنمط البحث (”apple"
) في ملف notes.txt
.
? يحتوي
findstr
على العديد من المعلمات التي يمكن استخدامها لتخصيص البحث. ولكن في هذا البرنامج التعليمي، ستستكشف بعضًا من أهم المعلمات عند البحث عن سلاسل في الملفات.

? ربما تكون تبحث عن سلاسل في ملفات متعددة. إذا كان الأمر كذلك، قم بتحديد مسارات الملفات مفصولة بمسافات، مثلما في الأمثلة التالية:
findstr parameters "pattern" "C:\\path\\to\\file1.txt" "C:\\path\\to\\file2.txt"
البحث عن سلاسل تطابق نمطًا معينًا أو نصًا حرفيًا.
عند العمل مع ملفات التكوين، يعد العثور على سلاسل نصية في نمط محدد أو حرفية أمرًا حاسمًا، خاصةً أثناء عملية تصحيح الأخطاء. لحسن الحظ، يخبر المعلمة /c
الأمر findstr
بالبحث عن سلاسل حرفية تتطابق مع نمط محدد، بما في ذلك أي مسافات أو أحرف خاصة.
إضافة المعلمة /c
إلى الأمر findstr
يأتي بفائدة في مواقف مثل:
- البحث عن عبارة محددة أو مجموعة من الكلمات التي تظهر بترتيب معين.
- البحث عن سلسلة نصية تحتوي على مسافات أو أحرف خاصة.
لرؤية كيفية عمل المعلمة /c
عمليًا، اتبع هذه الخطوات:
1. قم بتشغيل الأمر findstr
أدناه للبحث عن السلسلة الحرفية (/c
) banana cherry
في ملف *notes.txt*
.
في الناتج أدناه، يقوم الأمر findstr
بإرجاع الأسطر التي تحتوي فقط على السلسلة الدقيقة banana cherry
مع وجود مسافة بين الكلمتين.
تذكر أن المعلمة /c
حساسة لحالة الأحرف، لذا يقوم الأمر findstr
بإرجاع السلسلة بالحالة الحرفية التي حددتها بالضبط. إذا لم تتطابق أي من السلاسل في ملف notes.txt مع النمط المحدد، يعيد الأمر findstr
إخراجًا فارغًا.

2. بعد ذلك، أضف السطر التالي إلى ملف notes.txt، واحفظ التغييرات.
في هذه النقطة، يجب أن تكون هناك سطرين في ملف notes.txt يحتويان على سلسلة “hello”. واحد بالأحرف الصغيرة بالكامل (hello, world.
)، وآخر بحرف ‘H’ كبير (Hello, world.
).
hello, world.
3. الآن، قم بتشغيل كل أمر أدناه للبحث عن سلسلة النص hello, world
أو Hello, world
في ملف notes.txt
.
لاحظ أدناه أنه بغض النظر عن وجود سطرين يحتويان على سلسلة ‘hello, world’ في ملف notes.txt، ستحصل فقط على سطر واحد من السلسلة.
يخبر المعلم الأمر /c
الأمر findstr
بطباعة السطور التي تحتوي على سلسلة ‘hello, world’ بحروف صغيرة أو بحرف ‘H’ كبير.

4. أخيرًا، قم بتشغيل الأمر findstr
أدناه للبحث عن سلاسل تحتوي على النمط hello
في ملف notes.txt
وتجاهل (/i
) حالة الحروف.
البحث ذو الحساسية للحالة يعمل بشكل جيد إذا كنت بالفعل تعرف الحالة الفعلية للحرف الذي تبحث عنه. ولكن إذا كنت ترغب في رؤية جميع أسطر النصوص التي تطابق نمطًا بغض النظر عن حالة الحروف، فسيقوم المعلم /i
بالعمل.

العثور على سلاسل محددة داخل الملفات والمجلدات
بالإضافة إلى البحث عن سلاسل محددة في الملفات، يتيح لك أمر findstr
البحث عن سلاسل مطابقة داخل الملفات والمجلدات والمجلدات الفرعية.
يفترض أن ترغب في البحث عن جميع الملفات في دليل تحتوي على كلمة معينة في محتوياتها. إذاً، دع باراميتر /s
يقوم بالعمل القذر.
قم بتشغيل الأمر أدناه للبحث (/s
) في الدليل الحالي والأدلة الفرعية (/s
) عن جميع الملفات (*.*
) التي تحتوي على سلسلة system
، متجاهلًا حالة الحروف (-i
)
تذكر أن هذا الأمر يبحث فقط عن الملفات التي تحتوي على سلسلة system
ككلمة كاملة وليس تلك التي هي جزء من كلمات أكبر، مثل systematic أو systemize.
الإخراج أدناه يظهر قائمة بأسماء الملفات، واحدة في كل سطر، باسم كل ملف يحتوي على سلسلة ‘system’.

البحث عن السلاسل باستخدام cmdlet Select-String
حتى الآن، رأيت أن أمر findstr
يعمل بشكل ممتاز في البحث عن السلاسل، ولكن cmdlet Select-String
لا يجب تركه جانباً. هذا الأمر هو ما يعادل grep
في نظام التشغيل Windows ويتيح لك البحث عن أنماط نصية محددة في الملفات والسلاسل.
تم تصميم cmdlet Select-String
لتحقيق الكفاءة، ويتيح لك البحث بسرعة في كميات كبيرة من النصوص ويدعم تعابير العددية (regexes). وبدوره، يتيح لك هذا الأمر البحث عن أنماط أكثر تعقيداً حتى من findstr
.
لرؤية كيفية عمل الأمر البرمجي Select-String
، اتبع هذه الخطوات:
1. افتح ملف notes.txt أولاً، أضف الأسطر التالية، ثم احفظ التغييرات.
إضافة هذه الأسطر هي استعداد لتوضيح كيف يتعامل الأمر البرمجي Select-String
مع حالات الحروف في الخطوات التالية.
Apple
APPLE
ApplE
2. بعد ذلك، قم بتشغيل الأمر التالي للبحث عن سلسلة النص apple
في ملف notes.txt
.
أدناه، تحتوي عدة أسطر على سلسلة ‘apple’ ولكن بأحالات حروف مختلفة نظرًا لأن الأمر البرمجي Select-String
لا يميز بين الحالات الكبيرة والصغيرة. ولكن الشيء الجيد هو أنه يمكنك بسهولة رؤية والتحقق من السلاسل المطابقة نظرًا لتمييزها.

? ربما تفضل استخدام مطابقة سلسلة بسيطة بدلاً من مطابقة regex. إذا كان الأمر كذلك، فقم بإضافة المعامل
-SimpleMatch
كما هو موضح أدناه، ولا تقلق أبدًا بشأن صيغة regex والحروف الخاصة.Select-String 'APPLE' "C:\\myfiles\\notes.txt" -SimpleMatch
3. الآن، قم بتشغيل الأمر أدناه للبحث عن APPLE
في ملف notes.txt
مع تمكين حساسية الحالة (-CaseSensitive
). المعامل -CaseSensitive
يأتي بمنتهى الفائدة لدقة البحث.
كما يمكنك رؤية أدناه، السلسلة الوحيدة المطابقة تحمل الحالة الدقيقة التي حددتها (APPLE).

4. أخيرًا، قم بتشغيل الأمر أدناه باستخدام regex للبحث عن النمط '\?'
(علامة استفهام) في جميع ملفات النص (*.txt
) في الدليل $PSHOME\en-US
. يسمح لك regex بالبحث عن أنماط أكثر تعقيدًا.
إذا كان محتوى الملف يحتوي على علامة استفهام، فإن الأمر يعيد المسار الكامل للملف إلى وحدة التحكم، كما هو موضح أدناه.

استخدام ريبغريب (rg) كبديل لأمر grep في نظام التشغيل ويندوز
rg هو أداة سطر أوامر مفتوحة المصدر مصممة للبحث في الملفات باستخدام أنماط regex بشكل سريع. على غرار الأدوات الأخرى في سطر الأوامر، يحتوي rg على العديد من الخيارات والميزات لتخصيص عمليات البحث الخاصة بك.
ولكن على عكس أمر findstr و cmdlet Select-String، لا يتم تثبيت rg في نظام تشغيل ويندوز الخاص بك بشكل افتراضي.
لاستخدام rg كبديل لأمر grep في نظام التشغيل ويندوز:
1. قم بتشغيل الأمر scoop
أدناه لتثبيت ripgrep
على نظامك. scoop install ripgrep

2. بعد ذلك، قم بتشغيل الأمر rg
التالي للتحقق من الإصدار المثبت لـ rg.
كما هو موضح أدناه، سترى رقم الإصدار المثبت لـ rg. في هذه النقطة، يمكنك الآن تشغيل أوامر rg
للبحث عن سلاسل.

3. قم بتشغيل الأمر rg
أدناه للبحث عن سلسلة apple
في ملف notes.txt
.
يعرض الناتج أي سطور في ملف notes.txt تحتوي على سلسلة apple، كما هو موضح أدناه.
لاحظ أن الناتج مشابه لناتج cmdlet Select-String. ولكن بدلاً من التمييز، يقوم rg
بتغيير لون السلسلة المطابقة ورقم السطر لتمييزهما بسرعة.

4. الآن، قم بتشغيل الأمر التالي باستخدام regex للبحث عن سلاسل في ملف notes.txt
.
التعبير النمطي أدناه يستخدم حدود الكلمة (\b
) ويخبر rg
بالبحث عن سطور النصوص التي تحتوي على كلمة تبدأ بـ ‘s’ وتنتهي بـ ‘e’ (s\w+e
).

تصفية البحث حسب نوع الملف المحدد
ربما تكون خاصًا بالدليل الذي يوجد به الملف الذي تبحث عنه ولكن ليس اسم الملف. في مثل هذه الحالات، قد يكون تصفية البحث بواسطة نوع الملف هو أفضل خيار لك.
يمكن أن تكون تصفية البحث لأنواع الملفات المحددة مفيدة عندما تكون مهتمًا فقط بالبحث في أنواع معينة من الملفات. أو عندما ترغب في استبعاد بعض أنواع الملفات من البحث.
لتصفية البحث لأنواع ملفات معينة، سيقوم الخيار --type
بالعمل كما يلي:
1. قم بتشغيل الأمر rg
التالي للبحث عن السلسلة apple
في جميع ملفات النص (--type txt
) في الدليل C:\\myfiles
.
يأخذ الخيار --type
نوع ملف كوسيطة، مما يخبر أمر rg
بالبحث فقط في الملفات التي تطابق نوع الملف المحدد.
يظهر الإخراج أدناه السطر الذي يحتوي على السلسلة ‘apple‘ واسم الملف المرتبط به (notes.txt).

2. بعد ذلك، أنشئ ملف XML يسمى notes.xml واملأ الشفرة أدناه. هذا الملف XML مجرد استعداد لتوضيح كيفية عمل البحث بالرموز المعبرة.
٣. الآن، قم بتشغيل الأمر أدناه للبحث عن السلسلة apple
في جميع (*.
) . يقوم هذا الأمر بالبحث فقط في الملفات txt
و xml
كما هو محدد (-g
).
بشكل افتراضي، يحتوي rg
على حساسية لحالة الأحرف. ونتيجة لذلك، يظهر الإخراج فقط السطر الذي يحتوي على السلسلة الدقيقة ‘apple’، والملف المرتبط به.

٤. في النهاية، قم بتشغيل الأمر التالي، كما فعلت في الخطوة الثالثة، للبحث عن السلسلة apple
في جميع الملفات (*.
) التي تحتوي على امتداد txt
أو xml
. ولكن هذه المرة، أضف الخيار -i
، الذي يخبر rg
بتجاهل حالات الأحرف.

الاستنتاج
طوال هذا البرنامج التعليمي، تعلمت العديد من مكافئات grep في نظام Windows للبحث عن سلاسل كنصية وباستخدام regexes. لقد فتحت قوة هذه المكافئات مع مجموعة من الخيارات والمعلمات لتخصيص البحث وتصفية أنواع الملفات المحددة.
في هذه النقطة، يجب أن تكون واثقًا في تصحيح المشاكل وتحديد المشكلات والبحث من خلال مجموعات كبيرة من ملفات النصوص.
الآن، لماذا لا تضع مهاراتك الجديدة في التطبيق من خلال ممارسة regexes وتخصيص بحثك؟
Source:
https://adamtheautomator.com/grep-equivalents-in-windows/