私のCent OSシステムには、ユーザーがすべてのファイルを保存できるディレクトリがあります。どのユーザーが大容量ファイルをフォルダに入れているかを知りたいです。
このような状況が日々増えていますが、大容量ファイルについて知りたいです。手動で確認したくないので、すべてのコマンド。
答え1
次のようなものを使いたいと思います。
while read directory
do
find "$directory" -size +1M -exec stat --format="%U (id: %u), file: %n" {} \;
done << EOT
/path/to/folder 1
/path/to/my folder 2
EOT
+1M
1Mより大きいファイルを見つけます。
統計形式には、ユーザー名、ユーザーID、および一致するファイル名が表示されます。
コメントに続き、編集時間に基づいてフィルタリングしたいとします。たとえば、find
過去24時間以内に変更されたファイルは一致しません。これで次のようになります。
find "$directory" -size +1M -mtime +1 -exec stat --format="%U (id: %u), file: %n" {} \;
答え2
for i in `cat /etc/passwd | awk -F ":" '$3 >= 500 {print $1}'`; do find path -type f -size +1M -user $i -exec ls -ltr {} \;; done | awk '{print $3,$NF}'
上記には、ファイルサイズが1Mを超えるファイルとユーザー名がリストされています。正常に動作することを確認しました。アップデートを教えてください
また、システムユーザーのファイルも無視します。したがって、条件catを指定した場合にのみ/etc/passwd | awk -F ":" '$3 >= 500 {print $1}