Preciso encontrar os maiores arquivos em uma pasta.
Como digitalizo uma pasta recursivamente e classifico o conteúdo por tamanho?
Eu tentei usar ls -R -S
, mas isso lista os diretórios também.
Eu também tentei usar find
.
command-line
find
ls
user2179293
fonte
fonte
Respostas:
Você também pode fazer isso com apenas
du
. Só por segurança, estou usando esta versão dodu
:A abordagem:
Repartição da abordagem
O comando
du -ah DIR
produzirá uma lista de todos os arquivos e diretórios em um determinado diretórioDIR
. O-h
produzirá tamanhos legíveis por humanos que eu prefiro. Se você não os quiser, abandone esse interruptor. Estou usando ohead -6
just para limitar a quantidade de saída!Fácil o suficiente para classificá-lo do menor para o maior:
Inverta, do maior para o menor:
Não me mostre o diretório, apenas os arquivos:
Se você deseja apenas a lista dos menores para os maiores, mas os 6 principais arquivos incorretos, você pode reverter a opção de classificação, soltar (
-r
) e usar emtail -6
vez dohead -6
.fonte
grep -v "/$"
parte não parece estar fazendo o que você esperava, pois os diretórios não têm uma barra anexada. Alguém sabe como excluir diretórios dos resultados?/
s à direita - por exemplo,/home/saml/Downloads/audible
parece ser um diretório, mas não possui uma barra. Só/home/saml/Downloads/
tem uma barra, mas é provavelmente porque você a escreveu com uma barra ao especificar o argumento para inicialdu
.Se você deseja encontrar todos os arquivos no diretório atual e seus subdiretórios e listá-los de acordo com seu tamanho (sem considerar o caminho) e assumindo que nenhum dos nomes de arquivo contenha caracteres de nova linha, com o GNU
find
, você pode fazer o seguinte:A partir
man find
de um sistema GNU:De
man sort
:fonte
Tente o seguinte comando:
Ele listará os 20 maiores arquivos do diretório atual recursivamente.
Nota: A opção
-h
parasort
não está disponível no OSX / BSD, portanto você deve instalar asort
partir decoreutils
(por exemplo, viabrew
) e aplicar o caminho do compartimento local paraPATH
, por exemploComo alternativa, use:
Para os maiores diretórios
du
, use , por exemplo:ou:
fonte
Isso localizará todos os arquivos recursivamente e os classificará por tamanho. Ele imprime todos os tamanhos de arquivo em kb e arredonda para baixo para que você possa ver arquivos de 0 KB, mas estava perto o suficiente para meus usos e funciona no OSX.
find . -type f -print0 | xargs -0 ls -la | awk '{print int($5/1000) " KB\t" $9}' | sort -n -r -k1
fonte
find . -type f
localiza arquivos ... funciona recursivamente, você está certo, mas lista todos os arquivos que encontra, não os diretórios em si #Com
zsh
, você encontrará o maior arquivo (em termos de tamanho aparente, como a coluna de tamanho nals -l
saída, não o uso do disco) com:Para os 6 maiores:
Para classificar esses por tamanho de arquivo, você pode usar
ls
a-S
opção 's . Algumasls
implementações também têm uma-U
opção parals
não classificar a lista (como ela já está classificada por tamanhozsh
aqui).fonte
Solução simples para Mac / Linux que ignora diretórios:
fonte
O equivalente em
BSD
ouOSX
éfonte
Essa é uma necessidade incrivelmente comum por vários motivos (eu gosto de encontrar o backup mais recente em um diretório) e é uma tarefa surpreendentemente simples.
Vou fornecer uma solução Linux que usa os utilitários find, xargs, stat, tail, awk e sort.
A maioria das pessoas forneceu respostas únicas, mas eu prefiro as minhas porque lida corretamente com nomes de arquivos e o caso de uso pode ser facilmente alterado (modificar estatísticas e argumentos de classificação)
Também fornecerei uma solução Python que deve permitir que você use essa funcionalidade, mesmo no Windows
Solução de linha de comando Linux
Retornar recursivamente a lista inteira de apenas arquivos de um diretório, classificados por tamanho de arquivo
O mesmo de antes, mas desta vez, retorne o maior arquivo.
Mesmo padrão exato, mas agora selecione o arquivo mais novo em vez do maior
Explicação:
Solução Python
Esse script demora um pouco mais para ser explicado, mas essencialmente, se você o salvar como script, ele pesquisará o primeiro argumento fornecido na linha de comando e retornará o maior arquivo desse diretório. O script não verifica erros, mas deve fornecer uma idéia de como abordar isso no Python, o que oferece uma boa maneira independente da plataforma de resolver esse problema.
fonte
Variante desta resposta de uma pergunta semelhante
fonte
Experimente o comando abaixo com a opção de classificação para ter pastas com tamanho em ordem crescente
du -sh * | sort -sh
fonte
Algo que funciona em qualquer plataforma, exceto AIX e HP-UX, é:
fonte