답변:
FreeBSD의 / 맥 OS X와 find
, stat
과 awk
(정확히 편리한 한 줄하지만)
find -x . -type f -maxdepth 1 -exec sh -c 'stat -f '%z' "${@}"' _ '{}' + |
LC_ALL=C awk -v pwd="${PWD}" '
BEGIN{ sum=0; count=0; }
{ sum+=$1; ++count; }
END{
if (count == 0) exit;
printf ("number of files: %d\n", count);
printf ("average file size in B: %.5f\n", sum/count);
printf ("average file size in KB: %.5f\n", (sum/count) / 1024);
printf ("average file size in MB: %.5f\n", (sum/count) / (1024*1024));
printf ("directory: %s\n", pwd);
}
'
-v var=value
, awk
같은 ANSI C 시퀀스를 확장합니다 \n
, \r
... 껍질이 수출을하는 동안 PWD
사용할 수 있도록 ENVIRON["PWD"]
에서 awk
이름에 백 슬래시를 가진 디렉토리에 대한 문제의 종류를하지 않는다.
find . -type f -exec stat -f%z {} +|awk '{s+=$0}END{print s/NR}'
.
GNU 찾기로 :
find . -type f -printf '%s\n' | awk '{s+=$0}
END {printf "Count: %u\nAverage size: %.2f\n", NR, s/NR}'
또는 디스크 사용의 경우 :
find . -type f -printf '%k\n' | awk '{s+=$0}
END {printf "Count: %u\nAverage size: %.2f\n", NR, s*1024/NR}'
동일한 파일의 하드 링크가 여러 개 있으면 디스크 사용 횟수가 여러 번 계산됩니다.
위의 내용은 심볼릭 링크 나 디렉토리 또는 기타 특수 파일이 아닌 일반 파일 만 계산합니다. 숨겨진 파일이 포함되어 있습니다.
zsh
내장 과 동일 :
zmodload -i zsh/stat
count() {zstat -Hs -- $REPLY; ((size+=$s[size], count++, 0))}
size=0 count=0
**/*(oNDN.+count)
print -f "Count: %s\nAverage size: %.2f\n" $count $(($size./count))
하위 디렉토리를 무시하고 디렉토리의 파일에 대해서만 :
expr $(du -Ss | cut -f1) / $(find /path/to/dir -maxdepth 1 -type f | wc -l)
또는 서브 디렉토리의 파일을 포함하여 모든 파일을 계산하려면 다음을 수행하십시오.
expr $(du -s | cut -f1) / $(find /path/to/dir -type f | wc -l)
du -s
동일한 파일에 대한 추가 하드 링크를 제외하고 모든 파일 과 디렉토리 및 기타 비정규 파일 의 디스크 사용량 (크기 아님)을 합산하고 모든 일반 파일을 계산합니다. 또한 줄 바꿈 문자가있는 파일 이름은 여러 번 계산됩니다. GNU 고유의 것입니다. OS에 따라 섹터 또는 킬로바이트를보고합니다. find
du -S
du -s