Rata-rata ukuran file Linux, tipe file tertentu

0

Saya memiliki direktori i dengan banyak file yang berbeda. Apakah mungkin untuk menghitung ukuran rata-rata file dengan tipe file tertentu, dalam kasus saya * .txt? Saya ingin melakukannya untuk semua * .txt di direktori dan subfolder saat ini.

pengguna780564
sumber
Yah Anda menghitung ukuran setiap file txt (menggunakan ls -l, du atau stat -c %soutput tergantung pada kebutuhan) dan Anda melakukan mean aritmatika matematika dalam satu lingkaran. Jadi ya itu mungkin.
AB

Jawaban:

1

Anda dapat menggunakan stat -c%s *filename*untuk mendapatkan ukuran setiap file, dan ls -l *.txt | wc -l(catatan lsakan memberikan kesalahan jika tidak ada file * .txt dalam direktori) untuk mendapatkan jumlah file .txt dalam direktori saat ini.

Bash, AFIK, tidak mendukung aritmatika titik-mengambang, jadi Anda perlu menggunakan beberapa program lain untuk menghitung ukuran rata-rata. Saya sarankan menggunakan bc.

Skrip berikut akan mencetak ukuran rata-rata semua file * .txt dalam direktori saat ini

#!/bin/bash

tsize=0
fcount=`ls -l *.txt | wc -l`

for f in *.txt
do
    fsize=`stat -c%s $f`
    tsize=`expr $tsize + $fsize`
done
average=`echo "$tsize / $fcount" | bc -l`
echo "Average size: $average"

Perhatikan bahwa Anda akan mendapatkan kesalahan lsjika tidak ada file .txt di direktori saat ini.

Asam
sumber
0

Menggunakan duperintah yang dapat menghasilkan total besar dari semua file yang terdaftar:

echo $(( $(du -sbc *.txt | tail -1 | cut -f 1) / $(ls *.txt | wc -l) ))

Gunakan -katau -mbukan -buntuk unit pengukuran lainnya.

xenoid
sumber