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"}'