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.
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.
Jawaban:
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.
ls -l,duataustat -c %soutput tergantung pada kebutuhan) dan Anda melakukan mean aritmatika matematika dalam satu lingkaran. Jadi ya itu mungkin.