各ユーザー/グループの組み合わせに対してどのくらいのファイルがあるかを計算する方法は?すべてのディレクトリツリー/ etc、/ usr、および/ varに存在するすべてのユーザー/グループの組み合わせに対してこれを行う必要があります。
答え1
find . -type f -printf %u:%g\\n | awk '{usergroup[$0]++}; END {for(key in usergroup) printf "%-20s %d\n",key,usergroup[key]}'
hl:hauke 401
hl:1003 10
root:root 1
find
各ファイルにこのような行を印刷しますusername:groupname
。
awk
発生回数を計算するには、連想配列を使用します。各行に対して、行の内容と呼ばれる変数が増えます。
最後の行を読んだ後、awk
配列のキーと値を印刷します。
答え2
/etc /usr /var; do (find $i -> %u:%g\n" 2> /dev/null) |
出力:
2 /etc -> root:dip 1 /etc -> root:fuse 7 /etc -> root:lp 2441 /etc -> root:root 2 /etc -> root:shadow ...
目的のディレクトリ(/etc、/usr、およびvar)を繰り返します。 findコマンドを使用してディレクトリ内のすべてのファイルを見つけ、printfを使用してディレクトリとユーザーとグループを表示し、エラーを/ dev / nullにリダイレクトしました。結果を並べ替えて一意のカウントを実行して、数値と一意の文字列を出力します。