![コマンドプロンプトでディレクトリとそのサイズを一覧表示するにはどうすればいいですか?](https://rvso.com/image/1331441/%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%83%B3%E3%83%97%E3%83%88%E3%81%A7%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%83%88%E3%83%AA%E3%81%A8%E3%81%9D%E3%81%AE%E3%82%B5%E3%82%A4%E3%82%BA%E3%82%92%E4%B8%80%E8%A6%A7%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%81%84%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F.png)
Linux コマンドと同様に、フォルダー内のサブフォルダーのサイズを確認したいと思いますdu -sh
。コマンド プロンプトでディレクトリとそのサイズを一覧表示するにはどうすればよいでしょうか?
答え1
試してみてくださいディスクの使用状況Sysinternals のユーティリティ。具体的には、du -l 1
現在のディレクトリの各サブディレクトリのサイズが表示されます。詳細については、du
パラメータなしで実行してください。
PowerShell が問題ない場合は、以下を試してください。
Get-ChildItem |
Where-Object { $_.PSIsContainer } |
ForEach-Object {
$_.Name + ": " + (
Get-ChildItem $_ -Recurse |
Measure-Object Length -Sum -ErrorAction SilentlyContinue
).Sum
}
サイズはバイト単位です。MB などのより大きな単位でフォーマットするには、次のコードを試してください (1 行に凝縮されています)。
Get-ChildItem | Where-Object { $_.PSIsContainer } | ForEach-Object { $_.Name + ": " + "{0:N2}" -f ((Get-ChildItem $_ -Recurse | Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) + " MB" }
詳細については、Technetのこの記事。
より柔軟なサイズのフォーマット(実際のサイズに基づいてkB/MB/GBなどを選択)が必要な場合は、以下を参照してください。この質問とその答え。
通常のコマンドラインから、いくつかの簡単なコマンドだけで、あなたが望むことを実行するのは不可能だと思います。このスクリプトを例として(PowerShell が利用できず、サードパーティのユーティリティが受け入れられない場合を除き、このアプローチを追求する価値はないと考えているため、ここではコピーしません)。
答え2
Linuxでの経験はありません。ただし、Windows では、すべてのフォルダーとサブフォルダーをファイル サイズとともに一覧表示するためにdu
使用します。dir /s
答え3
これは、インドレックの答え以下を追加しました:
- サブディレクトリをさらに進むために再帰的にした
- より小さなディレクトリを省略するためのサイズしきい値を追加しました
- ディレクトリ名を現在のディレクトリからの相対パスに置き換えました
- 結果をパスで並べ替えました(サイズでフィルタリングされている場合は、サイズで並べ替えるよりも便利だと感じました)
- 結果をより読みやすくするためにいくつかの書式設定を追加しました
したがって、必要な値を設定し$minsizeMB
、$maxdepth
スクリプトを実行します。
$minsizeMB = 100;
$maxdepth = 5;
Get-ChildItem -depth $maxdepth -Recurse |
Where-Object { $_.PSIsContainer } |
Select-Object FullName |
Sort-Object FullName |
ForEach-Object {
$directory = Get-Item $_.FullName;
$path = Resolve-Path -Relative $directory.FullName ;
$size = ((Get-ChildItem $directory -Recurse | Measure-Object Length -Sum -ErrorAction SilentlyContinue).Sum / 1MB) ;
if ($size -ge $minsizeMB) { "{0,-90}: {1:N2} MB" -f ($path, $size) }
}