2012-12-17 2 views
19

私は、Powershellでフォルダ内のすべてのファイルタイプ(およびそのサブフォルダ)を一覧表示するワンライナーを作成しようとしています。Powershellのファイルタイプの明確なリスト

私はこれまでのところ、これを持っている:

Get-ChildItem D:\Audio -Recursive | Select-Object PSParentPath, Extension | Export-Csv D:\Test.csv 

しかし、私は一度だけ、フォルダごとに、すべての見つかった拡張子を良くし、表示を行うにはしたいと思います。

たとえば、D:\ Audio \ fooに10個のmp3ファイルと1個のjpgファイルがあり、D:\ Audio \ barに5個のflacファイルと1個のtxtファイルがあるとします。私はあることを出力したいと思います:

  • のfoo .MP3
  • のfoo .JPEG
  • バー.flac
  • バー

は私がゲット-ユニークを使用する必要がありますね.TXTどのようにExtensionプロパティで指定し、Pathプロパティで指定しないのですか?

+0

サブフォルダは1つだけ深いですか? – zdan

答えて

29

ジャストオブジェクトを選択する-uniqueを追加します、私はJimmehのソリューションをのcomplet(また、DirectoryNameのはここPSParentPathよりも良いかもしれません)

Get-Childitem -Recurse | Select-Object PSParentPath,Extension -Unique 

+0

それはかなりいいです。一意のスイッチ=) –

+2

が1ライナーなので、私は "get-childitem"ではなく "gci"を提案します。それはちょうど短いです。また、 "-recurse"は "-rec"とすることもできます。 – D3vtr0n

+0

完璧!これはまさに私が望むものです。 – Lupuss

0

これを試してみてください:

Get-ChildItem D:\Audio -Recurse | Group-Object psparentpath, extension | ? {(($_.Name -split ", .")[1]) -ne $Null } | ft -AutoSize @{Expression={(($_.Name.Split("\"))[$_.Name.Split("\").Length -1] -split ",")[0]};Label="Folder"}, @{Expression={($_.Name -split ", .")[1]};Label="Extension"} 

フォルダ+拡張、次のことをしようとする完全なパスを表示します。

Get-ChildItem D:\Audio -Recurse | Group-Object psparentpath, extension | ? {(($_.Name -split ", .")[1]) -ne $Null } | ft -AutoSize @{Expression={($_.Name.Replace("Microsoft.PowerShell.Core\FileSystem::","") -split ", .")[0]};Label="Folder"}, @{Expression={($_.Name -split ", .")[1]};Label="Extension"} 
+2

これを忘れてしまった。ジムメはそれをとても簡単に見せました:D –

2

のみを取るために-file使用ファイル

Get-ChildItem "c:\temp" -Recurse -file | select directoryname, Extension -Unique 
+0

'-File'キーのために::)私は多くの' aaa.bbb'フォルダを持っているので、間違った拡張子のトンを生成します。 –

関連する問題