在 Windows 的 Powershell v7 上,可以從來源的所有文字檔裡面,找出包含特定標籤的文字列,並匯集到另一個文字檔,方法如下。
語法
$files = Get-ChildItem "C:\Logs" -Filter *.txt -Recurse
foreach ($f in $files) {
Select-String -Path $f.FullName -Pattern "Keyword" |
ForEach-Object { $_.Line } |
Add-Content "Result.txt"
}
以上語法會查詢 C:\Logs 目錄裡的所有 txt 檔案,將包含 Keyword 這個關鍵字的文字列,全部匯集到 Result.txt 內。可以自己代換成需要的目錄、關鍵字和結果檔名。
說明
Get-ChildItem 列出目錄中的檔案與子目錄,參數如下:
-Filter:只抓特定檔名的檔案-Recurse:遞迴搜尋所有子資料夾
接著透過 foreach 逐一處理 Get-ChildItem 找到的檔案。
裡面有 Select-String ,用來搜尋文字或正規表達式,其參數如下:
-Path:指定要搜尋之檔案的路徑-Pattern:要查詢的文字或正規表達式
找到結果是物件,接著為每個找到的物件,透過 Add-Content 將該列文字附加到文字檔內。
