簡體   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