web-dev-qa-db-ja.com

特定のユーザーの合計ディスク使用量

特定のファイルシステムでの自分の合計ディスク使用量を確認したいと思います。コマンドを実行しました

du -h ~my_user_name

ただし、これにはmy_user_nameが所有するすべてのディレクトリがリストされます。このすべての情報の合計を取得したいと思います。合格するための適切なオプションは何ですか?私は試した

du -h -c ~my_user_name

しかし、それはうまくいきませんでした。

11
Alex

合格-s to duは、コマンドラインで指定された項目のみに出力を制限します。

du -sh ~

Du は、ユーザーごとではなく、フォルダーごとの合計のみを表示します。

たとえば、/home/example_user/の合計サイズが必要で、そのexample_userのみがそのフォルダーにファイルを持っている場合、これは機能する可能性があります。他のユーザーがファイルを持っている場合、これはあなたが所有するすべてのファイルのサイズではなく、そのフォルダー内のすべてのファイルの合計サイズになります。

ユーザーごとの情報を取得するには、次のいずれかを実行します。

  1. quota を有効にしている場合は、それらのコマンドを使用します。
  2. find を使用して、ファイルをカウントするすべてのディレクトリをウォークスルーします。 uid を使用して、ファイルのみを選択して保持します合計を数えるawkの 連想配列

find /path/to/search/ -user username_whos_files_to_count -type f -printf "%s\n" | awk '{t+=$1}END{print t}'

これは、GNU特定の拡張子を見つけるために使用します。

  • 最初のコマンドは、/path/to/search/内のすべてのファイルとディレクトリを検索します。
  • -type fを使用すると、ファイルのみが選択されます。それ以外の場合は、ディレクトリのサイズもカウントされます。 (空のフォルダを作成してみてください。おそらく4kのディスクスペースを使用します)。
  • -user username_whos_files_to_countは、1人のユーザーからの結果のみを選択します
  • -printf "%s\n"はサイズを印刷します。

この最初の部分を実行すると、数値のリストが表示されます。それらはファイルサイズです。 (その他はすべて取り除かれ、%s印刷コマンドにより、サイズのみが印刷されます。)

次に、これらの数値をすべて追加して、要約を取得します。例では、これはawkを使用して行われます。

9
Hennes

特定のユーザーによるすべての使用を見つけるには、適切なコマンドは次のとおりです。

find -user $USER -type f -exec du -chs {} +

特定のニーズに応じてさらに変更できます。たとえば、フォルダーごとに使用を要約したい場合が多く、次のようにするとうまくいきます。

find . -maxdepth 1 -user $USER -type d ! -path . -exec du -chs {} +

これは、1つのレベルのディレクトリのみを検索し、ユーザーごとに制限し、親ディレクトリを除外し、各ディレクトリと概要を最後に出力します。

2
asherkhb