繁体   English   中英

带有通配符的奇怪Powershell GCI递归结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM