특정 경로에서 각 사용자의 디스크 사용량을 얻을 수 있는 방법이 있습니까? du
사용자별 디스크 사용량을 집계하는 옵션은 없는 것으로 보이며, df
드라이브에 남아 있는 디스크의 양만 보고되는 것으로 나타납니다.
쉘에서 하나의 명령이나 몇 줄로 이 작업을 수행할 수 있습니까? 어떤 조언이라도 대단히 감사하겠습니다. 도움이 된다면 활용하겠습니다 zsh
.
노트:우리 파일 시스템에는 할당량이 활성화되어 있지 않습니다.
답변1
다음은 GNU find
및 에 적용됩니다 awk
.
find /path -type f -printf '%u %k\n' | awk '{
arr[$1] += $2
} END {
for ( i in arr ) {
print i": "arr[i]"K"
}
}'
답변2
stat
zsh의 내장 기능을 활용할 수 있습니다 .
zmodload zsh/stat
local -a stat
local -A usage
local x
for x in **/*(.); do
stat -A stat -- $x
((usage[$stat[5]] += stat[8]))
done
for x in ${(k)usage}; do
echo $usage[$x] ${${"$(getent passwd $x)"%%:*}:-$x}
done | sort -k1n
( getent
사용자 ID에서 사용자 이름을 검색하는 것은 Linux에만 해당되며 zsh에는 이에 대한 내용이 없다고 생각합니다.)