Temos um conjunto de diretórios contendo índices lucene. Cada índice é uma mistura de diferentes tipos de arquivos (diferenciados por extensão), por exemplo:
0/index/_2z6.frq
0/index/_2z6.fnm
..
1/index/_1sq.frq
1/index/_1sq.fnm
..
(são cerca de 10 extensões diferentes)
Gostaríamos de obter um total por extensão de arquivo, por exemplo:
.frq 21234
.fnm 34757
..
Eu tentei várias combinações de du / awk / xargs, mas acho difícil fazer exatamente isso.
filesystems
shell
disk-space-utilization
barnybug
fonte
fonte
Respostas:
Para qualquer extensão, você usa
para obter o tamanho total do arquivo para esse tipo.
E depois de pensar um pouco
O que produzirá o tamanho em bytes de cada tipo de arquivo encontrado.
fonte
-iname
para tornar a pesquisa de extensão de arquivo sem distinção entre maiúsculas e minúsculas.Com o bash version4, você só precisa chamar
find
,ls
eawk
não é necessário:fonte
read name size
pararead size name
e-printf "%f\t%s\n"
para-printf "%s\t%f\n"
corrigi-lo.if [ "$name" == "$ext" ]; then ext="*no_extension*"; fi
depoisext=${name##*.}
se precisar impedi-lo. Isto irá colocar todos os arquivos sem extensão em*no_extension*
grupo (estou usando*no_extension*
porque*
não é um caractere válido em nome do arquivo)Cada segunda coluna dividida por
.
e última parte (extensão) salva na matriz.então você tem o tamanho total de todas as extensões em bytes.
fonte
Estendendo o script de Iain com uma versão mais rápida para trabalhar com um grande número de arquivos.
fonte
Esta é a solução:
Solução publicada originalmente nesta postagem: obtenha todas as extensões e sua respectiva contagem de arquivos em um diretório
fonte
Eu resolvi usando estes dois comandos:
fonte
minha versão da resposta à pergunta:
fonte
Experimente o Crab ( http://etia.co.uk/ ) - é um utilitário de linha de comando que permite consultar o sistema de arquivos usando o SQL.
fonte