গ্যারিজন-এর উত্তরের ভিত্তিতে, এখানে একটি ওয়ান-লাইনার রয়েছে, যা আউটপুটটিকে মানুষের পাঠযোগ্য হিসাবে ফর্ম্যাট করে:
find . -type f -print0 | xargs -0 ls -l | awk '{ n=int(log($5)/log(2)); if (n<10) { n=10; } size[n]++ } END { for (i in size) printf("%d %d\n", 2^i, size[i]) }' | sort -n | awk 'function human(x) { x[1]/=1024; if (x[1]>=1024) { x[2]++; human(x) } } { a[1]=$1; a[2]=0; human(a); printf("%3d%s: %6d\n", a[1],substr("kMGTEPYZ",a[2]+1,1),$2) }'
এটির প্রসারিত সংস্করণটি এখানে:
find . -type f -print0 \
| xargs -0 ls -l \
| awk '{ n=int(log($5)/log(2)); \
if (n<10) n=10; \
size[n]++ } \
END { for (i in size) printf("%d %d\n", 2^i, size[i]) }' \
| sort -n \
| awk 'function human(x) { x[1]/=1024; \
if (x[1]>=1024) { x[2]++; \
human(x) } } \
{ a[1]=$1; \
a[2]=0; \
human(a); \
printf("%3d%s: %6d\n", a[1],substr("kMGTEPYZ",a[2]+1,1),$2) }'
প্রথমে awk
আমি 1kb এর চেয়ে কম সমস্ত ফাইল এক জায়গায় সংগ্রহ করতে ন্যূনতম ফাইলের আকার সংজ্ঞায়িত করেছি। দ্বিতীয়টিতে awk
, ফাংশনটি human(x)
একটি মানব পাঠযোগ্য আকার তৈরি করতে সংজ্ঞায়িত করা হয়। এই অংশটি এখানে একটি উত্তরের উপর ভিত্তি করে: /unix/44040/a-standard-tool-to-convert-a-byte-count-into-human-kib-mib-etc -একটি-du-ls1
নমুনা আউটপুটটি দেখে মনে হচ্ছে:
1k: 335
2k: 16
32k: 5
128k: 22
1M: 54
2M: 11
4M: 13
8M: 3