filesystems – Calcular el tamaño total del archivo por extensión en shell

Pregunta:

Tenemos un conjunto de directorios que contienen índices lucene. Cada índice es una mezcla de diferentes tipos de archivos (diferenciados por extensión), por ejemplo:

0/index/_2z6.frq
0/index/_2z6.fnm
..
1/index/_1sq.frq
1/index/_1sq.fnm
..

(se trata de 10 extensiones diferentes)

Nos gustaría obtener un total por extensión de archivo, por ejemplo:

.frq     21234
.fnm     34757
..

Probé varias combinaciones de du / awk / xargs, pero me resultó complicado hacer exactamente esto.

Respuesta:

Para cualquier extensión dada, un uso

find /path -name '*.frq' -exec ls -l {} \; | awk '{ Total += $5} END { print Total }'

para obtener el tamaño de archivo total para ese tipo.

Y despues de pensar un poco

#!/bin/bash

ftypes=$(find . -type f | grep -E ".*\.[a-zA-Z0-9]*$" | sed -e 's/.*\(\.[a-zA-Z0-9]*\)$/\1/' | sort | uniq)

for ft in $ftypes
do
    echo -n "$ft "
    find . -name "*${ft}" -exec ls -l {} \; | awk '{total += $5} END {print total}'
done

Lo que generará el tamaño en bytes de cada tipo de archivo encontrado.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım