
มีเหตุให้ต้องลบไฟล์จำนวนมหาศาลบน Windows แบบกำหนดเงื่อนไขตามชื่อไฟล์ ปัญหาคือไม่เคยเขียน PowerShell มาก่อน เลยต้องงมๆ อยู่พักหนึ่งกว่าจะทำได้
ผลออกมาคือท่าที่เวิร์คต้องใช้ | (pipe แบบเดียวกับ unix shell) โดยเริ่มจากเรียกชื่อไฟล์ทั้งหมดในไดเรคทอรี จากนั้น match ด้วยเงื่อนไขตาม regular expression และปิดด้วยการลบไฟล์ที่กรองแล้ว
Get-ChildItem $Path | Where{$_.Name -Match "<RegEx Pattern>"} | Remove-Item
ในกรณีที่เป็นไดเรคทอรีซ้อนไดเรคทอรี ก็สามารถใส่ -Recurse เพิ่มไปได้
Get-ChildItem $Path -Recurse | Where{$_.Name -Match "<RegEx Pattern>"} | Remove-Item
สำหรับการเขียน regular expression ก็ไม่ต่างอะไรกับของ unix ครับ ใครเขียนไม่เป็นก็ลองอ่าน Writing Regular Expressions in Windows PowerShell
เทคนิคเล็กๆ ของ PowerShell คือเราสามารถใส่พารามีเตอร์ -WhatIf ต่อท้ายก่อนสั่งลบไฟล์ได้ เพื่อเช็คดูก่อนว่า ตกลงมันใช่ไฟล์ที่เราจะลบจริงๆ หรือเปล่า - TechNet
ข้อมูลจาก StackOverflow