내 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}