各ユーザーのフォルダの所有権リストを生成するには?

各ユーザーのフォルダの所有権リストを生成するには?

Ubuntuの各ユーザーに対して複数の別々のリストを作成したいと思います。リストには、各ユーザーに属するファイルとフォルダが含まれています。

システムのすべてのユーザーを一覧表示するには、次のコマンドを使用します。

cat /etc/passwd | awk -F: '{print $1;}'

「user1」が最初の結果であると仮定すると、私が得たいリストは次のようになります。

find / -user "user1" > user1.txt

だから私の質問は、できるだけ少ない数のコマンドを使用してすべてのリストを取得する方法です。よろしくお願いします。

ベストアンサー1

getent passwd | cut -d: -f1 | while read USER ; do
  echo $USER #use this to show some kind of progress otherwise delete this string
  find / -user $USER > ${USER}.txt 2>/dev/null
done

PS:詳細については、以下を確認してください。シェルループ

しかし、これは非常に悪い考えです。findユーザー数だけファイルシステム全体で実行する必要があります。

私たちはよりスマートになり、他の方法で作業を行います。find一度だけ実行し、出力を次のファイルに分割します。

find / -printf "%u %p\n" | awk '{print $2 > $1".txt"}'

おすすめ記事