2012-04-03 2 views
16

나는 topfolder이라는 프로젝트 폴더가 있는데 특정 패턴과 일치하는 모든 하위 폴더의 모든 파일을 찾고 싶습니다. 폴더에 foo이 포함되어 있으면 그 안에있는 모든 파일을 나열하고 싶습니다. Get-ChildItem을 사용하여 특정 이름을 가진 디렉토리의 파일을 찾는 방법?

내가 좋아하는 뭔가를 시도 :

gci .\topfolder -rec -filter *foo* 

을하지만 두 가지 문제가 있습니다

  1. 파일 만 실제로 foo이 (내가 foo는 같은 폴더에있는 모든 파일을 원하는) 표시됩니다 포함.
  2. 이 필터와 일치하는 디렉토리도 결과 집합의 일부가됩니다.

    gci .\topfolder\*foo* -include *.* 
    

    하지만 전혀 작동하지 않습니다 - 그 패턴이 topfolder\foobar하지만 topfolder\subfolder\foobar 일치 있도록 분명히 일치에게 경로의 단일 세그먼트를 와일드 카드 :

그 때 나는이 시도.

gci .\topfolder -rec -include *foo* | where { $_.psiscontainer } | gci 

이 작동하지만 두 번 gci 전화를 낭비처럼 보인다 난 그냥 didn를 희망한다 '

내가 찾은 유일한 방법은 지금까지처럼, 두 번 가져-ChildItem을를 사용하는 것이 었습니다 -Path, -Filter 또는 -Include과 같은 올바른 와일드 카드 표현식을 찾으십시오.

가장 좋은 방법은 무엇입니까?

답변

18

내가 포함 대신 필터 매개 변수를 사용하는 것, 그것이 수행하는 많은 fatser

gci .\topfolder -rec -filter *foo* | where { $_.psiscontainer } | gci 
+0

어떻게 내 마지막 예와 다르다? 내 시도보다 더 느리지 않니? – Borek

+0

죄송합니다. 나는 눈이 멀었을 것입니다;) –

+0

방금 ​​업데이트 된 답변을 게시했습니다 –

관련 문제