gpt4 book ai didi

powershell - 使用 Get-ChildItem Powershell cmdlet 的 -Depth 属性

转载 作者:行者123 更新时间:2023-12-02 23:19:51 27 4
gpt4 key购买 nike

我正在尝试使用 Get-Children cmdlet 的 -Depth 参数来查找具有相同名称的 2 个文件中较浅(不太深)的一个,如下所示。

C:\temp\test.txt
C:\temp\Logs\test.txt

许多帖子建议将 -Path 定义为“C:\temp\”或“C:\temp\\*”。但就我而言,我更喜欢使用 -Depth 参数来限制搜索中的递归深度。我读过它暗示递归,因此不需要与递归结合使用。到目前为止,我已经尝试了下面的所有命令,但它们都返回相同的结果,如下所示。

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}

返回:

-Depth 0 ---------------
C:\Temp\Test.txt
-Depth 1 ---------------
C:\Temp\Test.txt
C:\Temp\0\Test.txt
-Depth 2 ---------------
C:\Temp\Test.txt
C:\Temp\0\Test.txt
C:\Temp\0\1\Test.txt
-Depth 3 ---------------
C:\Temp\Test.txt
C:\Temp\0\Test.txt
C:\Temp\0\1\Test.txt
C:\Temp\0\1\2\Test.txt
-Depth 4 ---------------
C:\Temp\Test.txt
C:\Temp\0\Test.txt
C:\Temp\0\1\Test.txt
C:\Temp\0\1\2\Test.txt

关于powershell - 使用 Get-ChildItem Powershell cmdlet 的 -Depth 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54312527/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com