Isso parece funcionar para mim:
find . -name \*.log -ls | sort -r -n -k7
Estou usando o CentOS 6.8
Gostaria de saber se posso encontrar todos os arquivos com a extensão .log e ordenar por tamanho de arquivo e exibir o tamanho do arquivo ao lado do nome do arquivo?
Atualmente, estou usando este comando para encontrar todos os arquivos com a extensão .log:
find . -name \*.log
Isso parece funcionar para mim:
find . -name \*.log -ls | sort -r -n -k7
Aqui estão duas opções; um bash-centric e um apenas por diversão.
( shopt -s globstar dotglob; stat --format "%s %n" -- **/*.log | sort -rn )
Isto:
shopt
não afetem o shell atual / em execução. **
para corresponder arquivos em subdiretórios; O dotglob permite que o shell globbing corresponda a diretórios que começam com .
stat
é como reunimos os tamanhos dos arquivos com seus nomes; Ele é instalado por padrão nos sistemas CentOS - não é especificado por POSIX. **/*.log
, que reúne nomes de arquivos correspondentes (* .log) no diretório atual e em quaisquer subdiretórios. -n
sem o r
para classificá-los em ordem crescente). Outra opção centrada no bash, mas que também exerce um sinalizador ls
para classificar seus argumentos por tamanho:
shopt -s globstar dotglob
ls -lS **/*.log
# or, in reverse:
ls -lrS **/*.log
Para exercitar seu sistema e sua paciência, você pode procurar arquivos de um tamanho específico em uma determinada ordem:
for((i=9223372036854775807;i>=0;i--)); do find . -name \*.log -size ${i}c -exec stat --format "%s %n" {} + ; done
Isso executa 9.223.372.036.854.775.807 (mais de find
de comandos, procurando por arquivos * .log de todos os tamanhos possíveis, novamente chamando stat
para exibir apenas os tamanhos e nomes dos arquivos. Caso haja vários arquivos do mesmo tamanho, incluímos a sintaxe {} +
do find para passar quantos nomes de arquivo para stat
, como caberá no ambiente. Talvez seja necessário ajustar o intervalo de for
do loop com base no tamanho inteiro do seu shell, ou se você sabe o tamanho do maior arquivo de log. Esta "opção" tem o "benefício" de poder ser compatível com POSIX se você substituir a chamada stat
por um simples ls
.
Experimente este comando:
find . -name \*.log |ls -lSh
Tags command-line find sort linux size