tamanho médio do arquivo no Linux, tipo de arquivo específico

0

Eu tenho diretório i com um monte de arquivos diferentes. É possível calcular o tamanho médio de arquivos com um tipo de arquivo específico, no meu caso * .txt? Eu quero fazer isso para todos * .txt no diretório atual e subpastas.

    
por user780564 15.10.2017 / 13:09

2 respostas

1

Você pode usar stat -c%s *filename* para obter o tamanho de cada arquivo, e ls -l *.txt | wc -l (nota ls dará um erro se não houver arquivos * .txt no diretório) para obter o número de arquivos .txt no diretório atual.

Bash, AFIK, não suporta aritmética de ponto flutuante, então você precisará usar algum outro programa para calcular o tamanho médio. Sugiro usar bc .

O script a seguir imprimirá o tamanho médio de todos os arquivos * .txt no diretório atual

#!/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"

Observe que você receberá um erro de ls se não houver arquivos .txt no diretório atual.

    
por 15.10.2017 / 14:01
0

Usando o comando du que pode produzir um total geral de todos os arquivos listados:

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

Use -k ou -m em vez de -b para outras unidades de medida.

    
por 15.10.2017 / 17:44

Tags