[英]Strange Powershell GCI Recurse Results with Wildcard
我正在尝试将GCI与Recurse参数一起使用,以获取指定路径的子文件夹内的所有文件的列表。
我正在使用以下行:
gci 'C:\temp\TestRecurse\*\*' -Recurse
在TestRecurse文件夹下,我具有以下内容:
TestRecurse
|---b.txt
|---dir1
|------a.txt
我希望返回a.txt。 但是,我得到a.txt和b.txt。 如果我将a.txt放入另一个子文件夹,则对我仍然陌生:
TestRecurse
|---b.txt
|---dir1
|------dir2
|---------a.txt
上面的相同语句仅返回a.txt。 我对返回b.txt时如何弄乱a.txt的位置感到困惑。 有人可以向我解释为什么会发生这种情况,以及为什么根本不会返回b.txt吗?
更新
我应该提一下,尽管他们对此表示赞赏,但我并不一定要寻找解决方法。 这是我们环境中较大脚本的一部分,该脚本负责在保持灵活性的同时以各种方式移动文件。 它的行为不像我预期的那样,所以我试图了解为什么它按原样工作。 正如PetSerAl所指出的那样,理解Get-ChildItem可能比它值得的麻烦更多。
谢谢!
您在父目录( TestRecurse\\*
)中包含通配符,因此您也将获取其中包含的文件。 尝试获取TestRecurse
的文件夹列表,然后对其进行遍历。
结构体:
TestRecurse\b.txt
TestRecurse\dir1
TestRecurse\dir1\a.txt
码:
Get-ChildItem 'C:\tmp\TestRecurse\' | ` # Get the list of items within TestRecurse
? {$_.PSIsContainer} | ` # Filter items that are folders
% {Get-ChildItem $_.FullName -Recurse} # Iterate through and get all items within those folders
这仅返回dir1内的文件夹和文件,而不返回dir1本身。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.