Respostas:
Eu usaria find dirname -not -empty -ls
, assumindo o GNU find.
ls
e 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 +0
isso indica para procurar arquivos com tamanho maior que 0
bytes. 0
pode 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 f
opção acima. Isso indica para localizar apenas arquivos. E, como observado nos comentários abaixo, a -print
opção não é realmente necessária.
-maxdepth 1
antes -size +0
. Também -print
é a ação padrão, portanto não é necessária.
find
variam 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 -size
antes -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 L
qualificador 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 ls
não era apenas um exemplo e você simplesmente a intenção de inspeção visual, você pode classificar por tamanho: ls -S
.