A maneira mais fácil é usar -Scom ls, para classificar o conteúdo do diretório por tamanho. Os arquivos ainda são agrupados por diretório, o que pode não ser o que você deseja:
ls -RaltrS --block-size=M /*
Essa abordagem pode não ser uma opção aqui; talvez all_files.txtseja um arquivo antigo ou foi gerado em um computador diferente. Ainda é possível classificar os nomes de arquivos por tamanho de arquivo. Para um arquivo típico, uma linha de saída produzida por ls -Raltr --block-size=M(observe que --block-sizecomeça com dois hífens em vez de um) se parece com isso:
-rw-rw-r-- 1 owner group 1M Apr 16 05:37 file.txt
Use sortcom -h(para números legíveis, como 1M) e com -k 5para especificar que os tamanhos de arquivo estão na quinta coluna (delimitada por espaço em branco) do texto:
sort -k 5 -h /home/root/all_files.txt
Classificar a saída do ls -Raltr --block-size=M /*que está armazenado /home/root/all_files.txtpode ser confuso por causa das linhas extras que não listam os tamanhos dos arquivos, então use grepprimeiro para obter apenas as linhas desejadas:
grep '^-' /home/root/all_files.txt | sort -k 5 -h
Aqui, grep '^-'descarta as linhas que não começam com um hífen (por exemplo, linhas que começam com dpara diretório ou lpara link).
Esta resposta funciona com ferramentas GNU no Xubuntu 16.04. Não foi testado em sistemas MacOS ou BSD.
Para ordenar todos os arquivos regulares dentro ou sob o diretório atual por tamanho, o zshshell fornece o **padrão globbing útil que combina /em nomes de caminho (ou seja, "recursivamente em subdiretórios). Também permite qualificar um padrão para que você, por exemplo, obtenha apenas uma correspondência de arquivos regulares, e que os resultados sejam classificados de acordo com o tamanho desses arquivos.
No zshshell, esse padrão se pareceria com
**/*(.OL)
Isso retornaria todos os arquivos regulares ( .) ordenados em ordem inversa ( O) de tamanho ( L).
Para obter a listagem apenas dos arquivos, use
printf '%s\n' **/*(.OL)
Para obter a lssaída de "lista longa", use
ls -fl **/*(.OL)
(a -fopção impede lsde fazer sua própria classificação dos arquivos).
Se zshnão for seu shell comum, você ainda poderá usar esses comandos, supondo que zshesteja instalado em seu sistema:
zsh -c 'ls -fl **/*(.OL)'
Obviamente, você também pode adicionar --block-size=Misso se estiver usando GNU ls.
Se você estiver interessado apenas nos dez maiores arquivos, use o padrão
A maneira mais fácil é usar
-S
comls
, para classificar o conteúdo do diretório por tamanho. Os arquivos ainda são agrupados por diretório, o que pode não ser o que você deseja:Essa abordagem pode não ser uma opção aqui; talvez
all_files.txt
seja um arquivo antigo ou foi gerado em um computador diferente. Ainda é possível classificar os nomes de arquivos por tamanho de arquivo. Para um arquivo típico, uma linha de saída produzida porls -Raltr --block-size=M
(observe que--block-size
começa com dois hífens em vez de um) se parece com isso:Use
sort
com-h
(para números legíveis, como 1M) e com-k 5
para especificar que os tamanhos de arquivo estão na quinta coluna (delimitada por espaço em branco) do texto:Classificar a saída do
ls -Raltr --block-size=M /*
que está armazenado/home/root/all_files.txt
pode ser confuso por causa das linhas extras que não listam os tamanhos dos arquivos, então usegrep
primeiro para obter apenas as linhas desejadas:Aqui,
grep '^-'
descarta as linhas que não começam com um hífen (por exemplo, linhas que começam comd
para diretório oul
para link).Esta resposta funciona com ferramentas GNU no Xubuntu 16.04. Não foi testado em sistemas MacOS ou BSD.
Para ordenar todos os arquivos regulares dentro ou sob o diretório atual por tamanho, o
zsh
shell fornece o**
padrão globbing útil que combina/
em nomes de caminho (ou seja, "recursivamente em subdiretórios). Também permite qualificar um padrão para que você, por exemplo, obtenha apenas uma correspondência de arquivos regulares, e que os resultados sejam classificados de acordo com o tamanho desses arquivos.No
zsh
shell, esse padrão se pareceria comIsso retornaria todos os arquivos regulares (
.
) ordenados em ordem inversa (O
) de tamanho (L
).Para obter a listagem apenas dos arquivos, use
Para obter a
ls
saída de "lista longa", use(a
-f
opção impedels
de fazer sua própria classificação dos arquivos).Se
zsh
não for seu shell comum, você ainda poderá usar esses comandos, supondo quezsh
esteja instalado em seu sistema:Obviamente, você também pode adicionar
--block-size=M
isso se estiver usando GNUls
.Se você estiver interessado apenas nos dez maiores arquivos, use o padrão
em vez de.