Usando gnu find, creo que esto es lo que quieres. Encuentra todos los archivos reales y no directorios (-tipo f), y para cada uno imprime el nombre del archivo (% p), una pestaña (\ t), el tamaño en kilobytes (% k), el sufijo "KB" y luego una nueva línea (\ n).
find . -type f -printf '%p\t%k KB\n'
Si el comando printf no formatea las cosas de la manera que desea, puede usar exec, seguido del comando que desea ejecutar en cada archivo. Use {} para el nombre del archivo y termine el comando con un punto y coma (;). En la mayoría de los proyectiles, los tres personajes deben escaparse con una barra invertida.
Aquí hay una solución simple que los encuentra e imprime usando "ls -lh", que le mostrará el tamaño en forma legible por humanos (k para kilobytes, M para megabytes):
find . -type f -exec ls -lh \{\} \;
Como otra alternativa más, "wc -c" imprimirá el número de caracteres (bytes) en el archivo:
find . -type f -exec wc -c \{\} \;
find . -name '*.ear' -exec ls -lh {} + \;
(extensión GNU) ofind . -name '*.ear' -print0 | xargs -0 ls -lh
. También es posible que desee agregar-type f
si solo está interesado en archivos (o agregar-d
a ls si desea que los directorios se incluyan sin su contenido).