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