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

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

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

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

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

この情報を提供できるコマンドをご存知ですか?

ハートマン兄弟

答え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/*

関連情報