在 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