フォルダ内のフォルダのサイズと所有者を表示する

フォルダ内のフォルダのサイズと所有者を表示する

ディレクトリ内のすべてのフォルダを、サイズ、フォルダ/ファイル、所有者とともに表示する方法を知っている人はいますか?

私が知っている唯一のコマンドは、du -hs * しかし、それはすべてのサブフォルダーも表示し、所有者は表示しません。

たとえば、「/my/path/」の下にあるフォルダー/ファイルのサイズ、フォルダー/ファイル、所有者の情報を取得したいとします。

この情報を提供できるコマンドをご存知の方はいらっしゃいますか?

Br ハルトマン

答え1

次のコマンドを試すことができますfind:

find /my/path -maxdepth 1 -type d -printf "%u %g   " -exec du -h --max-depth=0 {} \;

-type d開始点/my/path(オプション)の1レベル下のすべてのディレクトリ(フィルタ)を検索します-maxdepth 1。その後、

  • 所有者とグループを印刷するオプションを使用し-printfて、
  • du --max-depth=0見つかった各ディレクトリに対して ( )を呼び出し、メカニズムを使用して、{}前のオプションの出力の直後に名前と合計サイズを出力します。-printf-exec

答え2

ここに簡単なスニペットを用意しました

#!/usr/bin/env bash

unset fname owner size i

for f in "$@"
  do
    fname[i]="$f"
    owner[i]=$(stat -c %U "$f")
    size[i++]=$(stat -c %s "$f")
  done 

for i in "${!fname[@]}"
  do
    printf "User %s owns %s and the size is %d Kbytes\n" "${owner[i]}" "${fname[i]}" $((${size[i]} / 1024))
  done

スクリプトを実行可能にするか、次のように実行します。 bash script_name [path]

chmod u+x script_name

そして実行する

./script_name /my/path/*

関連情報