ディレクトリ内のすべてのフォルダのサイズ、フォルダ/ファイル、所有者を表示する方法を知っている人はいますか?
私が知っている唯一のコマンドは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/*