Provavelmente porque o consulente pediu lse você usou find;) eu levantei embora ... É uma solução adequada
BloodPhilia
2
Se você usar "find. -Not -empty -ls", ele também incluirá o diretório atual (ou seja, "." Na saída), para incluir apenas os arquivos atuais, use "find. -Type f -not -empty -ls"
user672009
19
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.
Para evitar um aviso, você deve colocar -maxdepth 1antes -size +0. Também -printé a ação padrão, portanto não é necessária.
Cyrus
@cYrus - Nenhuma advertência para mim (cygwin)
Nifle
As implementações 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.
ls
e você usoufind
;) eu levantei embora ... É uma solução adequadaEste é um trabalho para encontrar ls não é poderoso o suficiente.
-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 que0
bytes.0
pode ser alterado para qualquer tamanho que você desejar.-print
diz ao find para imprimir o caminho completo para o arquivo que encontraEditar:
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.fonte
-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. GNUfind
(que é muito comum) vai produzir um aviso se você colocar-size
antes-maxdepth
.find dirname -type f ! -empty
fonte
Se você pretende usar
ls
, precisará de uma pequena ajudaawk
.fonte
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):Usuários de outros shells devem usar o find. Com o GNU find (como encontrado principalmente no Linux):
Uma maneira compatível com POSIX é:
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
.fonte
funcionará melhor se você quiser todos os arquivos não vazios, em vez de apenas diretórios.
fonte
Bash 4.0+
fonte