使用 PowerShell 过滤文件和文件夹
-
在 PowerShell 中使用
Get-ChildItem
Cmdlet 过滤文件 -
Get-ChildItem
别名 -
在 PowerShell 中使用
Get-ChildItem
Cmdlet 获取子目录中的所有文件 -
在 PowerShell 中使用
Get-ChildItem
Cmdlet 过滤具有特定条件的文件
在某些情况下,我们需要检查文件是否存在于特定位置或目录中。虽然我们可以使用旧命令 dir
,但仅导出特定文件是不够的。对于这个用例,我们可以使用 Windows PowerShell 的 Get-ChildItem
cmdlet。
本文将讨论 PowerShell Get-ChildItem
cmdlet,我们将使用它来获取目录中的所有项目并利用其过滤器开关参数。
Windows PowerShell Get-ChildItem
cmdlet 获取特定位置或目录中的子项。例如,在 cmdlet 中指定的位置可以是文件系统目录、注册表或证书存储。此外,提到的子项可以是另一个目录、子文件夹或文件。
Get-ChildItem -Path C:\Temp
在上述命令中,Get-ChildItem
从使用 -Path
参数指定的路径获取子项。
Get-ChildItem cmdlet 执行时,在 PowerShell 控制台上显示文件、目录及其 Mode
、LastWriteTime
、Length
(文件大小)和 Name
属性。
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----l 18/01/2022 8:52 pm WindowsPowerShell
d----l 20/12/2021 3:36 pm Zoom
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-a---l 16/05/2020 3:32 am (677) default.cpu1
-a---l 21/08/2019 9:06 am (2240) Default.rdp
-a---l 26/05/2021 8:24 am (63399) e-sig.jpg
-a---l 09/03/2020 10:48 pm (143) fan config.sfsm
-a---l 19/09/2020 12:07 pm (279515089) MCSA.rar
在 PowerShell 中使用 Get-ChildItem
Cmdlet 过滤文件
我们可以使用 -File
开关参数仅返回路径或目录内的文件。
示例代码:
Get-ChildItem -Path C:\Temp -File
输出:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-a---l 16/05/2020 3:32 am (677) default.cpu1
-a---l 21/08/2019 9:06 am (2240) Default.rdp
-a---l 26/05/2021 8:24 am (63399) e-sig.jpg
-a---l 09/03/2020 10:48 pm (143) fan config.sfsm
-a---l 19/09/2020 12:07 pm (279515089) MCSA.rar
Get-ChildItem
别名
Windows PowerShell 为 Get-ChildItem
cmdlet 使用默认的内置别名 gci
。就像下面的示例片段一样,你可以使用别名而不是 cmdlet 来实现更快和无缝的脚本编写。
示例代码:
gci -Path C:\Temp -File
在 PowerShell 中使用 Get-ChildItem
Cmdlet 获取子目录中的所有文件
如果我们想获取目录和子目录中的所有文件,请使用 -Recurse
开关参数。
示例代码:
gci -Path C:\Temp -Recurse - Force -File
-Force
参数允许 cmdlet 获取用户无法访问的项目,例如系统文件或隐藏文件。Force 参数不会覆盖安全限制。供应商之间的实施有所不同。在 PowerShell 中使用 Get-ChildItem
Cmdlet 过滤具有特定条件的文件
使用 -Filter
参数,我们可以使用单个表达式过滤掉结果。 -Filter
参数不需要 -Path
参数,因为它将使用你当前的工作目录。
示例代码:
gci -Filter C:\Temp\* -Filter *.txt
我们还可以使用 -Include
开关参数,它接受多个条件,这是 -Filter
参数的一个绝佳优势。但是,请记住 -Include
参数需要 -Path
参数出现在表达式中。
示例代码:
gci -Path C:\Temp\* -File -Include CEF*.pdf, *.txt
除了接受多个条件之外,-Include
参数与正则表达式配合得很好,因此使其成为比 -Filter
参数更通用的方法。
输出:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---l 30/12/2020 3:23 pm (151) backup phrase.txt
-a---l 17/06/2021 3:13 am (410049) CEF1750.pdf
-Include
开关参数时,路径的末尾应包含通配符星号 (*
)。此通配符表示你正在查询具有在 -Include
参数中定义的特定扩展名的所有路径子项。Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn相关文章 - PowerShell File
- 使用 PowerShell 从路径中提取文件名
- 使用 PowerShell 连接文件
- 从 PowerShell 中的文件名中删除路径和扩展名
- 使用 PowerShell 获取文件扩展名
- 使用 PowerShell 进行递归文件搜索