powershell - 以字母顺序,深度优先顺序递归迭代?
问题描述
如何遍历文件夹,以便尊重字母(词汇)顺序,但在转到旧目录的下一项之前递归到任何目录?
用于澄清的示例结构:
Α |- 1.txt |- 2.txt |- 3 | |- a.txt | \- b.txt \- 4.txt 贝塔 \- 测试 \- 其他 \- 文件.txt
我想以这样一种方式进行迭代,如果我要打印所有经过的项目,结果将如下所示:
Α 1.txt 2.txt 3 一个.txt b.txt 4.txt 贝塔 测试 其他 文件
但是,我似乎无法弄清楚如何正确地进行递归和排序,而不会使Get-ChildItem
手动递归的嵌套变得非常糟糕,但我希望有一种更简洁的方法我也可以从中学习。
如果由于某种原因这太难以实现,那么保留处理项目的顺序是对我来说重要的底线,因为如果必须的话,我可以在不保留树结构的情况下做到这一点。
解决方案
不需要手动递归,当你也使用和Get-ChildItem
时会做你想做的事。Sort-Object
Select-Object
Get-ChildItem
使用递归获取您的项目列表sort
通过FullName
将项目按您想要的顺序放置select
Name
仅显示项目名称的属性
给出:
Get-ChildItem C:\folder -Recurse | sort FullName | select -ExpandProperty Name
Alpha
1.txt
2.txt
3
a.txt
b.txt
4.txt
Beta
Test
Another
file.txt