Powershell Get-ChildItem -Depth 属性 问题
Powershell Get-ChildItem -Depth property issues
Powershell 版本 5.1
我有一个文件的 2 个副本,一个嵌套比另一个更深。
C:\temp\test.txt
C:\temp\Logs\test.txt
我想使用 Get-ChildItem 来查找较浅(不太深?)的文件。许多帖子建议将 -Path 定义为 "C:\temp\*" 或 "C:\temp\*\*"。但我想使用 Get-ChildItem cmdlet 的 -Depth 参数或找出它失败的原因。它应该限制搜索中递归的深度。我读过它意味着递归,因此不需要与递归结合使用。到目前为止,我已经尝试了下面的所有命令,但它们都 return 进一步显示相同的结果。
Get-ChildItem -Path C:\temp -Depth 0 -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 1 -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 2 -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 3 -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth '1' -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth "1" -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth $d -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth $d -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 0 -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 0 -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 2 -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 3 -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Include tes*.txt -Depth 1 | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Include tes*.txt -Depth 0 | Format-List -Property FullName
Get-ChildItem -Path C:\temp -File -Include tes*.txt -Depth 0 | Format-List -Property FullName
Get-ChildItem -Path C:\temp -File -Include tes*.txt -Depth 1 | Format-List -Property FullName
Get-ChildItem -Path C:\temp -File -Include tes*.txt -Depth 2 | Format-List -Property FullName
Get-ChildItem -Path C:\temp\* -Include tes*.txt -Recurse | Format-List -Property FullName
以上所有命令产生相同的结果,即
FullName : C:\temp\Logs\test.txt
FullName : C:\temp\test.txt
除了 -Depth 属性 之外,使用许多人建议的“\*”使我能够隔离较深的文件而不是较浅的文件。我错过了什么吗?
PS C:\> Get-ChildItem -Path C:\temp\* -Include tes*.txt -Recurse | Format-List -Property FullName
FullName : C:\temp\Logs\test.txt
FullName : C:\temp\test.txt
PS C:\> Get-ChildItem -Path C:\temp\*\* -Include tes*.txt -Recurse | Format-List -Property FullName
FullName : C:\temp\Logs\test.txt
PS C:\> Get-ChildItem -Path C:\temp\*\*\* -Include tes*.txt -Recurse | Format-List -Property FullName
PS C:\>
-Depth
的用法似乎排除了-Include
或
的用法
甚至 -Path
参数中的通配符。
让 -Filter
完成工作,在此示例树中:
> tree /F
C:.
└───temp
│ Test.txt
│
└───0
│ Test.txt
│
└───1
│ Test.txt
│
└───2
Test.txt
这一班:
0..4|%{"-Depth $_ ---------------";(Get-ChildItem -Path C:\Temp\ -Depth $_ -Filter Tes*.txt).FullName}
returns:
-Depth 0 ---------------
C:\Temp\Test.txt
-Depth 1 ---------------
C:\Temp\Test.txt
C:\Temp[=12=]\Test.txt
-Depth 2 ---------------
C:\Temp\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
-Depth 3 ---------------
C:\Temp\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
-Depth 4 ---------------
C:\Temp\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
当使用 -include
作为过滤器时,-depth
似乎被忽略了(错误?)。
-include
可用于匹配多个条件。
如果您只有一个条件并且想要限制搜索深度,或者使用一个条件进行多次搜索,最好使用 -filter
。
Powershell 版本 5.1
我有一个文件的 2 个副本,一个嵌套比另一个更深。
C:\temp\test.txt
C:\temp\Logs\test.txt
我想使用 Get-ChildItem 来查找较浅(不太深?)的文件。许多帖子建议将 -Path 定义为 "C:\temp\*" 或 "C:\temp\*\*"。但我想使用 Get-ChildItem cmdlet 的 -Depth 参数或找出它失败的原因。它应该限制搜索中递归的深度。我读过它意味着递归,因此不需要与递归结合使用。到目前为止,我已经尝试了下面的所有命令,但它们都 return 进一步显示相同的结果。
Get-ChildItem -Path C:\temp -Depth 0 -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 1 -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 2 -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 3 -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth '1' -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth "1" -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth $d -Include tes*.txt | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth $d -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 0 -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 0 -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 2 -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Depth 3 -Include tes*.txt -Recurse | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Include tes*.txt -Depth 1 | Format-List -Property FullName
Get-ChildItem -Path C:\temp -Include tes*.txt -Depth 0 | Format-List -Property FullName
Get-ChildItem -Path C:\temp -File -Include tes*.txt -Depth 0 | Format-List -Property FullName
Get-ChildItem -Path C:\temp -File -Include tes*.txt -Depth 1 | Format-List -Property FullName
Get-ChildItem -Path C:\temp -File -Include tes*.txt -Depth 2 | Format-List -Property FullName
Get-ChildItem -Path C:\temp\* -Include tes*.txt -Recurse | Format-List -Property FullName
以上所有命令产生相同的结果,即
FullName : C:\temp\Logs\test.txt
FullName : C:\temp\test.txt
除了 -Depth 属性 之外,使用许多人建议的“\*”使我能够隔离较深的文件而不是较浅的文件。我错过了什么吗?
PS C:\> Get-ChildItem -Path C:\temp\* -Include tes*.txt -Recurse | Format-List -Property FullName
FullName : C:\temp\Logs\test.txt
FullName : C:\temp\test.txt
PS C:\> Get-ChildItem -Path C:\temp\*\* -Include tes*.txt -Recurse | Format-List -Property FullName
FullName : C:\temp\Logs\test.txt
PS C:\> Get-ChildItem -Path C:\temp\*\*\* -Include tes*.txt -Recurse | Format-List -Property FullName
PS C:\>
-Depth
的用法似乎排除了-Include
或
的用法
甚至 -Path
参数中的通配符。
让 -Filter
完成工作,在此示例树中:
> tree /F
C:.
└───temp
│ Test.txt
│
└───0
│ Test.txt
│
└───1
│ Test.txt
│
└───2
Test.txt
这一班:
0..4|%{"-Depth $_ ---------------";(Get-ChildItem -Path C:\Temp\ -Depth $_ -Filter Tes*.txt).FullName}
returns:
-Depth 0 ---------------
C:\Temp\Test.txt
-Depth 1 ---------------
C:\Temp\Test.txt
C:\Temp[=12=]\Test.txt
-Depth 2 ---------------
C:\Temp\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
-Depth 3 ---------------
C:\Temp\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
-Depth 4 ---------------
C:\Temp\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
C:\Temp[=12=]\Test.txt
当使用 -include
作为过滤器时,-depth
似乎被忽略了(错误?)。
-include
可用于匹配多个条件。
如果您只有一个条件并且想要限制搜索深度,或者使用一个条件进行多次搜索,最好使用 -filter
。