使用 PowerShell 进行递归文件搜索
Rohan Timalsina
2023年1月30日
2022年5月16日
-
在 PowerShell 中使用带有
-Recurse
开关的Get-ChildItem
Cmdlet 以递归方式搜索文件 -
在 PowerShell 中使用带有
-Recurse
开关的dir
Cmdlet 以递归方式搜索文件
有时,我们将文件保存在计算机上却忘记了保存位置。有多种方法可以在计算机上搜索文件。其中之一是 PowerShell,它允许你列出存在于特定位置的文件和目录。
本教程将教你使用 PowerShell 递归搜索文件。
在 PowerShell 中使用带有 -Recurse
开关的 Get-ChildItem
Cmdlet 以递归方式搜索文件
Get-ChildItem
cmdlet 显示特定位置的文件和目录列表。与 -Recurse
参数一起使用时,它不会显示空目录。
例如,以下命令显示存在于 C:\pc
目录中的文件和目录的列表。
Get-ChildItem -Path 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
使用 -Recurse
参数,你可以从指定位置的所有目录或子目录中获取文件。这意味着你可以使用 PowerShell 在特定位置递归搜索文件。
Get-ChildItem -Path C:\pc -Filter car.png -Recurse -ErrorAction SilentlyContinue -Force
正如你在下面看到的,car.png
位于目录 C:\pc\computing\task4
中。如果在多个目录中找到,它将显示所有 car.png
文件。
输出:
Directory: C:\pc\computing\task4
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/3/2022 2:26 PM 3465 car.png
如果你不知道文件名,你可以搜索所有具有相同文件扩展名的文件。例如,下面的命令将显示 C:\pc
目录中所有具有 .txt
扩展名的文件。
Get-ChildItem -Path C:\pc -Filter *.txt -Recurse -ErrorAction SilentlyContinue -Force
显示的输出通常很大,因为它包括文件的 Path
、Mode
、LastWriteTime
、Length
和 Name
。你只能用| %{$_.FullName}
显示文件的路径。
Get-ChildItem -Path C:\pc -Filter *.txt -Recurse -ErrorAction SilentlyContinue -Force | %{$_.FullName}
输出:
C:\pc\ReadMe.txt
C:\pc\computing\task1\MatrixA.txt
C:\pc\computing\task3\password.txt
在 PowerShell 中使用带有 -Recurse
开关的 dir
Cmdlet 以递归方式搜索文件
dir
cmdlet 是 Get-ChildItem
的别名。它还显示特定位置的文件和目录列表。
dir -Path C:\pc -Filter password.txt -Recurse
输出:
Directory: C:\pc\computing\task3
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 1/7/2022 3:43 PM 18 password.txt
Author: Rohan Timalsina