Respostas:
Eu usaria find dirname -not -empty -ls, assumindo o GNU find.
lse você usou find;) eu levantei embora ... É uma solução adequada
Este é um trabalho para encontrar ls não é poderoso o suficiente.
find -maxdepth 1 -size +0 -print
-maxdepth 1 - indica para procurar apenas o diretório atual, remover para procurar em todos os subdiretórios ou alterar o número para descer 2, 3 ou mais níveis.
-size +0isso indica para procurar arquivos com tamanho maior que 0bytes. 0pode ser alterado para qualquer tamanho que você desejar.
-print diz ao find para imprimir o caminho completo para o arquivo que encontra
Editar:
adição tardia: você provavelmente também deve adicionar a -type fopção acima. Isso indica para localizar apenas arquivos. E, como observado nos comentários abaixo, a -printopção não é realmente necessária.
-maxdepth 1antes -size +0. Também -printé a ação padrão, portanto não é necessária.
findvariam muito em termos de quais são as opções válidas e para onde podem ir. GNU find(que é muito comum) vai produzir um aviso se você colocar -sizeantes -maxdepth.
O Ls quase não tem opção para filtrar arquivos: esse não é o seu trabalho. A filtragem de arquivos é o trabalho do shell para casos simples (através de globbing) e o trabalho de localização de casos complexos.
No zsh, é possível que o Lqualificador de globbing retenha apenas arquivos cujo tamanho seja> 0 (o .qualificador se restringe a arquivos regulares):
ls *(.L+0)
Usuários de outros shells devem usar o find. Com o GNU find (como encontrado principalmente no Linux):
find -maxdepth 1 -type f ! -empty -exec ls {} +
Uma maneira compatível com POSIX é:
find . -type f -size +0c -exec ls {} + -o -name . -o -prune
Se lsnão era apenas um exemplo e você simplesmente a intenção de inspeção visual, você pode classificar por tamanho: ls -S.