指定フォルダ配下の総ファイルサイズ(byte)取得

Shell

Powershellでフォルダ配下(サブフォルダを含む)の総ファイルサイズ(byte)を取得する方法です。

結論

dir -r -Force | measure -Property Length -Sum | select Sum

コマンド作成までの経緯

フォルダ配下のファイル情報を取得

dir -r -Force

dirはGet-ChildItemのエイリアス(別名)です。
Get-childItemはフォルダ配下のファイル情報を取得するPowershellの関数です。
そこにオプション-r(ちゃんと書くなら-Recurse)を付与することで、サブフォルダを含むフォルダは以下のファイル情報を取得することができます。

2023/05/31追記
dir -rだと隠しファイルが表示されないため、 隠しファイルも表示するオプションである-Forceを追加しました。
nさんご指摘ありがとうございます。

ファイルサイズだけ指定して合計値を取得する

dir -r -Force | measure -Property Length -Sum

先程のdirコマンドにパイプ(|)を使用して、ファイルサイズだけ取得して合計値を返却する関数を使用します。
measureはmeasure-objectのエイリアスでパイプ以前の関数から返却されたobjectのプロパティを指定して合計値を取得する関数です。
今回はファイルサイズだけ使用したいので、Lengthだけ指定しています。

ファイルサイズの合計が格納されたプロパティを取得する

dir -r -Force | measure -Property Length -Sum | select Sum

measure関数はCount、Average、Sum、Maximum、Minimum、Propertyを返却します。
上記返却値のうち欲しい情報はSumのみなのでselect関数を使用してSumを取得します。
select関数はSelect-Objectのエイリアスで、パイプ以前に返却されたオブジェクトのプロパティを選択して、出力する関数です。

まとめ

以上でフォルダ配下(サブフォルダを含む)の総ファイルサイズを取得するコマンドが完成しました。
ぜひ皆さん使ってみてください。

コメント

  1. n より:

    dir -rでは隠しファイルが検索されないので-Forceオプションが必要です。

  2. 泡アハ 泡アハ より:

    ご指摘ありがとうございます!

タイトルとURLをコピーしました