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.