2009-08-25 2 views
7

PowerShell을 사용하여 현재 작업중인 디렉터리 아래에 모든 디렉터리를 나열하기 만하면됩니다. 이는 bash 쉘에서 쉽게 : Windows의"dir/a : d"(Win) 또는 "ls -d * /"(Bash)에 대한 PowerShell 아날로그

ls -d */ 

또는 cmd.exe를 :

dir /a:d 

그러나 나는 하나의 명령으로 할 수있을 수없는 것 PowerShell을 사용. 너무 장황와 관련된 것 그

ls | ? {$_Mode -like "d*"} 

, 그리고 내가 어디 조항이 별도 필요하지 않은 것으로 의심되는 대신 작동 발견 된 경우에만 I의 한이다. Get-ChildItem에 대한 도움말은 Mode에서 필터링하는 방법을 명확히하지 않습니다. 누구나 나를 계몽시킬 수 있습니까?

+0

이 문제가 성가신 것으로 생각되면 MS Connect에서 투표하십시오 : https://connect.microsoft.com/PowerShell/feedback/ ViewFeedback.aspx? FeedbackID = 308796 –

답변

5

이 너무 작동합니다

ls | ?{$_.PsIsContainer} 

은 bash는 또는 cmd.exe를보다 조금 더 말의 것을 의심 할 여지가없는 사실이다. 자세한 정보를 줄이려면 함수와 별칭을 프로필에 추가 할 수 있습니다. 내가 필터를 사용할 방법을 찾을 수 있는지 알 겠어.

추가 조사에서 나는 자신의 함수와 별칭을 만드는 것보다 더 간결한 방법이 있다고 생각하지 않습니다. 당신은 당신의 프로필에 넣고 수 :

다음
function Get-ChildContainer 
{ 
    param(
      $root = "." 
     ) 
    Get-ChildItem -path $root | Where-Object{$_.PsIsContainer} 
} 

New-Alias -Name gcc -value Get-ChildContainer -force 

폴더에있는 디렉토리에 ls하기 : 그것은 -Include 같은 어떤 장식성을 처리 할 것이기 때문에

gcc C:\ 

이 솔루션은 조금 제한 될 것 - Exclude, -Filter, -Recurse 등이 있지만 함수에 쉽게 추가 할 수 있습니다.

실제로 이것은 아주 단순한 해결책이지만, 당신이 그것을 추구하기로 결정하면 올바른 방향으로 나아갈 것입니다. 내가 귀찮게하지 않을지라도 당신에게 솔직 해지기 위해서. 이 경우에 대한 자세한 설명은 개인적인 의견으로는 일반적으로 파워 쉘의 전체적인 유연성이 극복하는 것 이상입니다.

+3

정말요? 별칭 "gcc"? :) –

+2

어 ... 나는 컴파일러를 집에 남겨 두었다. 아무런 갈등도 없었다. – EBGreen

2

보십시오 : 당신은 PowerShell을 팀 블로그의 이전 게시물 확인하실 수 있습니다

ls | ? {$_.PsIsContainer} 
+0

EBGreen에 너무 느린 것 같아요! – Kai

+0

속도가 중요하지 않다고 생각합니다. :) – EBGreen

+0

이것은 키 입력을 줄이기 위해 PowerShell 3에서 단순화 할 수 있습니다. ls | ? PsIsContainer – bart

2
dir -Exclude *.* 

내가 쉽게이보다

dir | ? {$_.PsIsContainer} 

플러스를 기억 발견, 그것은 빠른 -exclude 대신 -ex를 사용하거나 탭을 사용하여 확장 할 수 있습니다.

+0

위대한 트릭, 감사합니다! –

+1

예를 들어 도트가있는 디렉토리가있는 경우에는 작동하지 않습니다. 'foo.bar' –

0

"FOR/D"가 어떻게 작동하는지 파악하려고하기 때문에이 스레드가 나타났습니다. 실제로/D 옵션과 함께 일괄 명령 이스케이프 (%)를 사용하는 방법.

위의 항목을 희망으로 읽었습니다. 솔직히 FOR 명령 옵션보다 훨씬 복잡합니다. 물론 작동한다면.

하는 명령 확장 (즉, 기본값)을 사용하는 경우를위한 수단을 추가로 사용


에 대한 다음과 같은 추가 양식이 지원됩니다

디렉토리 에만

set에 와일드 카드 (* 및?)가 포함되어 있으면 set 명령과 일치하는 각 디렉토리 (지정된 디렉토리의 파일 집합 대신)에 대해 지정된 명령이 실행됩니다. 구문은 다음과 같습니다.

for/D {%% | %} 변수의 (설정) do 명령 [CommandLineOptions]