在 PowerShell 中在多个文件中搜索字符串并返回文件名
Rohan Timalsina
2023年1月30日
PowerShell
PowerShell String
-
在 PowerShell 中使用
Get-ChildItem和Select-StringCmdlet 在多个文件中搜索字符串并返回文件名 -
在 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
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Rohan Timalsina
