ใน Linux/Unix คำสั่ง grep ใช้สำหรับค้นหาข้อความ (สตริง) หรือข้อผิดพลาดในไฟล์บันทึก (log file) Grep ช่วยให้คุณค้นหา/เลือกข้อมูลใดๆ ในเอาต์พุตของคำสั่งอื่น:
command | grep search
ใน PowerShell คุณสามารถใช้คำสั่ง Select-String เพื่อค้นหาสตริงข้อความในไฟล์
เช่น คำสั่งต่อไปนี้แสดงทุกบรรทัดที่มี ERROR ในไฟล์ข้อความหรือ stdout:
Select-String -Path c:\tmp\makeapp_sxtracesxs.txt -Pattern "ERROR"
คำสั่งนี้แสดงจำนวนบรรทัดที่มีข้อความที่คุณค้นหาและค่าของมัน
หากคุณต้องการค้นหาสตริงในไฟล์ TXT ทั้งหมดในไดเรกทอรีเฉพาะ ให้รันคำสั่งด้านล่าง:
Select-String -Path c:\tmp\*.txt -Pattern "ERROR"
คุณสามารถใช้คำสั่งนี้หากต้องการค้นหาทุกไฟล์ในโฟลเดอร์ ตัวอย่างเช่น คำสั่งนี้อาจมีประโยชน์สำหรับการค้นหาบันทึกการขนส่ง (SMTP) และบันทึกการติดตามข้อความบน Exchange Server
โดยใช้ตัวเลือก Exclude และ Include คุณสามารถรวมหรือตัดไฟล์บางไฟล์สำหรับการค้นหาได้ คำสั่งต่อไปนี้จะค้นหาผ่านไฟล์ TXT และ LOG ทั้งหมดที่ไม่มี copy ในชื่อของพวกเขา:
$path = "c:\tmp\*"
Select-String -Path $path -Pattern "ERROR" -Include "*.txt","*.log" -Exclude "*copy*"
ตัวอย่างก่อนหน้านี้ค้นหาข้อความในไดเรกทอรีที่ระบุเท่านั้น หากต้องการค้นหาไฟล์ในไดเรกทอรีย่อยแบบเรียกซ้ำ (recursively) ให้ใช้คำสั่ง Get-ChildItem:
Get-ChildItem -Path 'c:\tmp\' -Recurse -include "*.mp3","*.avi" -ErrorAction SilentlyContinue | Select-String -SimpleMatch "ERROR","WARNING"