On Wed, 20 May 2015 14:25:21 +0000, Mauricio López wrote:
Una recomendación: no separes el tamaño del archivo con punto, mejor con coma, y luego usas split() para separar el nombre de la extensión. split() te mete los pedazos de la cadena que separaste en un array y te dice la
cantidad de elementos que fueron a parar a ese array. Es una idea


En realidad utilizo el punto como separador simplemente para aprovechar la propia funcionalidad de AWK de obtener el último campo mediante $NF para así obtener la extensión del archivo a partir de su nombre. No creo que en este caso split funcione, porque tanto los tamaños de los archivos como las extensiones tienen una cantidad de caracteres variable.

Y gracias por aclararme la estructura de evaluación de AWK, tenías razón, bastó con ajustar las llaves e insertar un END:

#! /bin/sh

if [ $# -eq 0 ]; then
   TARGETDIR=$(pwd)
elif [ $# -eq 1 ] && [ -d "$1" ]; then
   TARGETDIR="${1}"
else
echo "El argumento debe ser un directorio (de no especificarse, se utiliza el actual)."
   exit -1
fi

find "${TARGETDIR}" -type f -printf "%s.%f\n" | \
 awk -F "." '{if (NF>2) ext=$NF; else ext="otros";
   tipo[ext]++; peso[ext]+=$1;} END {for (i in tipo)
   printf("%s(%0.0f)\t%10.0f\n", i, tipo[i], peso[i])}' | \
 sort -k2 -nr | tr '\t' ';' | column -ts ';'

unset TARGETDIR

exit

--
Este mensaje ha sido analizado por MailScanner
en busca de virus y otros contenidos peligrosos,
y se considera que est� limpio.

______________________________________________________________________
Lista de correos del Grupo de Usuarios de Tecnologías Libres de Cuba.
Gutl-l@jovenclub.cu
https://listas.jovenclub.cu/cgi-bin/mailman/listinfo/gutl-l

Responder a