Usando gnu find, acho que é isso que você quer. Ele encontra todos os arquivos reais e não os diretórios (-type f), e para cada um imprime o nome do arquivo (% p), uma guia (\ t), o tamanho em kilobytes (% k), o sufixo "KB" e então uma nova linha (\ n).
find . -type f -printf '%p\t%k KB\n'
Se o comando printf não formatar as coisas da maneira que você deseja, você pode usar exec, seguido pelo comando que deseja executar em cada arquivo. Use {} para o nome do arquivo e termine o comando com um ponto e vírgula (;). Na maioria dos shells, todos os três desses caracteres devem ser escapados com uma barra invertida.
Aqui está uma solução simples que os encontra e os imprime usando "ls -lh", que mostrará o tamanho em formato legível (k para kilobytes, M para megabytes):
find . -type f -exec ls -lh \{\} \;
Como outra alternativa, "wc -c" imprimirá o número de caracteres (bytes) no arquivo:
find . -type f -exec wc -c \{\} \;
find . -name '*.ear' -exec ls -lh {} + \;
(extensão GNU) oufind . -name '*.ear' -print0 | xargs -0 ls -lh
. Além disso, você pode adicionar-type f
se estiver interessado apenas em arquivos (ou adicionar-d
a ls se quiser que os próprios diretórios sejam incluídos sem seu conteúdo).