Tôi có một thư mục dự án có tên là topfolder
và tôi muốn tìm tất cả các tệp trong tất cả các thư mục con khớp với một mẫu nhất định, ví dụ: khi thư mục chứa foo
ở bất kỳ đâu trong tên của nó, tôi muốn liệt kê tất cả các tệp bên trong nó.Cách tìm tệp trong thư mục có tên nhất định bằng Get-ChildItem?
tôi đã cố gắng một cái gì đó như:
gci .\topfolder -rec -filter *foo*
nhưng nó có hai vấn đề:
- Chỉ những tệp thực sự chứa
foo
sẽ được liệt kê (Tôi muốn bất kỳ tập tin trong thư mục foo-like). - Các thư mục phù hợp với bộ lọc này cũng sẽ là một phần của tập hợp kết quả.
Sau đó, tôi cố gắng này:
gci .\topfolder\*foo* -include *.*
nhưng điều đó không làm việc ở tất cả - rõ ràng là kí tự đại diện trận đấu chỉ là một phân khúc duy nhất của một con đường để mô hình đó sẽ phù hợp topfolder\foobar
nhưng không topfolder\subfolder\foobar
.
Cách duy nhất tôi đã tìm thấy cho đến nay là sử dụng Get-ChildItem hai lần, như thế này:
gci .\topfolder -rec -include *foo* | where { $_.psiscontainer } | gci
này hoạt động nhưng nó có vẻ như một sự lãng phí để gọi gci
hai lần và tôi hy vọng tôi chỉ didn' t tìm biểu thức ký tự đại diện phù hợp cho một số nội dung như -Path
, -Filter
hoặc -Include
.
Cách tốt nhất để làm điều đó là gì?
Làm thế nào là nó khác với ví dụ cuối cùng của tôi? Nó sẽ không còn chậm hơn nỗ lực của tôi? – Borek
Xin lỗi, tôi chắc đã bị mù;) –
Chỉ cần đăng câu trả lời cập nhật –