在 PowerShell 中在多個檔案中搜尋字串並返回檔名
Rohan Timalsina
2023年1月30日
2022年5月16日
-
在 PowerShell 中使用
Get-ChildItem
和Select-String
Cmdlet 在多個檔案中搜尋字串並返回檔名 -
在 PowerShell 中使用
ls
和sls
在多個檔案中搜尋字串並返回檔名
你可以使用 PowerShell 檢視特定目錄中存在的檔案。它還允許你遞迴搜尋檔案以查詢子目錄中存在的檔案。
但是是否可以在檔案中搜尋字串並在 PowerShell 中獲取這些檔案的名稱?答案是肯定的。本教程將教你在多個檔案中搜尋字串並在 PowerShell 中返回檔名。
在 PowerShell 中使用 Get-ChildItem
和 Select-String
Cmdlet 在多個檔案中搜尋字串並返回檔名
Get-ChildItem
cmdlet 顯示特定位置中存在的檔案和目錄的列表。 -Recurse
引數有助於遞迴地列出所有檔案、目錄或子目錄。但它不會在輸出中顯示空目錄。
Select-String
cmdlet 在檔案中搜尋和查詢字串模式。
以下命令將在 C:\pc
目錄的所有檔案中搜尋字串 system
並列出檔案的完整路徑。
Get-ChildItem -Path C:\New -Recurse | Select-String -Pattern 'system' -List | Select Path
輸出:
Path
----
C:\New\literature_review.pdf
C:\New\Proposal.pdf
C:\New\Draft.pdf
C:\New\Report.docx
C:\New\fyp\Forms.docx
如果你在命令中包含 Line
,你還可以顯示包含字串的行。
Get-ChildItem -Path C:\New -Recurse | Select-String "system" -List | Select Path,Line
在 PowerShell 中使用 ls
和 sls
在多個檔案中搜尋字串並返回檔名
ls
命令在列出 Unix 和類 Unix 作業系統中的檔案和目錄時很流行。ls
命令也可在 PowerShell 中使用,並且功能類似。
如果未指定路徑,它將列出工作目錄中存在的檔案和目錄。使用 -r
選項,ls
遞迴地列出檔案和目錄。
ls C:\pc
輸出:
Directory: C:\pc
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 1/2/2022 2:53 PM computing
d----- 1/2/2022 1:24 PM New folder
-a---- 1/2/2022 1:36 PM 17384 hello
-a---- 1/2/2022 2:48 PM 5134 matrix.c
-a---- 12/26/2020 7:03 PM 321 ReadMe.txt
sls
是 Select-String
cmdlet 的別名。它還在檔案中搜尋字串模式。
你可以使用以下命令在多個檔案中搜尋字串並在 PowerShell 中獲取檔名。
ls -r -Path C:\pc | sls 'hello' | select -u Path
輸出:
Path
----
C:\pc\computing\task3\crack
C:\pc\computing\task3\crack1
C:\pc\computing\task3\crack2
C:\pc\computing\task3\cracked
C:\pc\computing\task3\pass
C:\pc\computing\task3\password.txt
C:\pc\computing\task3\pwd
C:\pc\computing\task4\hello
Author: Rohan Timalsina