Tenemos un conjunto de directorios que contienen índices lucenos. 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
..
He probado varias combinaciones de du / awk / xargs pero me resulta difícil hacer exactamente esto.
filesystems
shell
disk-space-utilization
barnybug
fuente
fuente
Respuestas:
Para cualquier extensión dada, un uso
para obtener el tamaño total del archivo para ese tipo.
Y después de pensar un poco
Lo que generará el tamaño en bytes de cada tipo de archivo encontrado.
fuente
-iname
para hacer que la extensión de archivo no sea sensible a mayúsculas y minúsculas.Con bash versión 4, solo necesita llamar
find
,ls
yawk
no es necesario:fuente
read name size
aread size name
y-printf "%f\t%s\n"
a-printf "%s\t%f\n"
debería solucionarlo.if [ "$name" == "$ext" ]; then ext="*no_extension*"; fi
despuésext=${name##*.}
si necesita prevenirlo. Esto colocará todos los archivos sin extensión en el*no_extension*
grupo (lo estoy usando*no_extension*
porque*
no es un carácter válido en el nombre del archivo)Cada segunda columna dividida por
.
y la última parte (extensión) guardada en la matriz.entonces tienes el tamaño total de cada extensión en bytes.
fuente
Ampliando el script de Iain con una versión más rápida para trabajar con una gran cantidad de archivos.
fuente
Esta es la solución:
Solución publicada originalmente en esta publicación: Obtenga todas las extensiones y su respectivo recuento de archivos en un directorio
fuente
Resolví usando estos dos comandos:
fuente
mi versión de respuesta a la pregunta:
fuente
Pruebe Crab ( http://etia.co.uk/ ): es una utilidad de línea de comandos que le permite consultar el sistema de archivos mediante SQL.
fuente