社内SEの話

日々起きたことの記録用

【Powershell】 フォルダ内のファイルサイズ大きい順に取得

↓プログラミングで副業を考えたらこちら↓

ある日Cドライブの空き容量が逼迫してしまいました。

このPCにしてからファイル整理をしてこなかったので当然ですが、さすがにCドライブの逼迫はWindowsUpdateにも影響するのでファイル整理をして空き容量を増やします。

とはいえどのファイルを消せば効率よく容量を確保できるかですが、ファイルサイズの大きいファイルから順番に削除していけばある程度容量が確保できるはずです。

ファイル検索

対象のフォルダをカレントディレクトリにした状態で下記コマンドを実行

ポイントはなるべく浅いフォルダで検索したほうがより大きなサイズのファイルを見つけられます。

Get-ChildItem .\ -Recurse | Select-Object FullName , Length | Sort-Object Length -Descending | Select-Object -first 30

ディレクトリを指定したい場合はフォルダを指定する

Get-ChildItem c:\sample\ -Recurse | Select-Object FullName , Length | Sort-Object Length -Descending | Select-Object -first 30

windowsやProgram filesといった管理者権限の必要のあるフォルダも含めたい場合はPowershellを管理者モードで実行すれば含めて並ばせる事が可能です。

やっていること

  1. Get-ChildItemで指定のフォルダ情報を取得します

  2. Select-ObjectでGet-ChildItemで必要な列のみ抽出します。今回はFullName , Lengthを選択します

  3. Sort-Object で ファイルサイズのLength を 降順(-Descending)に並び替えます

  4. Select-Object ファイルサイズ上位30件を表示させるために -first30にします

表示されたファイル名から削除や移動してもいいファイルを見つけ出します。

結果

無駄と思われるファイルを削除して空き領域を少し削除

サイズの大きい仮想マシンのVDIファイルは削除していないのでそこまで減っていませんが、応急処置としては十分な空き領域を確保できました。