Eu tenho centenas de arquivos pdf e arquivos html em um diretório. E eu quero saber o tamanho total dos arquivos pdf.
Por comando du -ch /var/foo
, posso ver o tamanho total do arquivo, mas só preciso da última linha, o tamanho total.
Se o diretório contiver apenas arquivos pdf, eu posso usar a -s
opção, mas a opção não pode ser usada neste momento.
Como posso obter apenas o tamanho total de um determinado tipo de arquivo?
shell
wildcards
disk-usage
ferros e areias
fonte
fonte
du -sh /foo/*.pdf
?du -ch /var/foo/*.pdf | tail -n 1
Respostas:
Com o GNU
du
(ou seja, no Linux ou Cygwin não incorporado), você pode usar a--exclude
opção para excluir os arquivos que não deseja corresponder.Se você deseja corresponder positivamente
*.pdf
arquivos, você precisará usar algum outro método para listar os arquivos, edu
vai pelo menos exibição uma linha de saída por argumento, além de um grande total com a opção-c
. Você pode ligartail
para remover tudo, exceto a última linha, ou sed para remover a palavra "total" também. Para enumerar os arquivos nesse diretório, use curingas no shell.Se você precisar atravessar arquivos em subdiretórios também, use
find
ou use um**/
padrão se o seu shell suportar isso. Para**/
, no bash, primeira execuçãoshopt -s extglob
, e observe que as versões do bash até 4.2 atravessarão links simbólicos para diretórios; no zsh, isso funciona imediatamente.Uma complicação adicional da versão find é que, se houver muitos arquivos,
find
será executadodu
mais de uma vez, para manter o limite de comprimento da linha de comando. Com o método curinga, você receberá um erro se isso acontecer ("limite do comprimento da linha de comando excedido"). O código a seguir supõe que você não tenha nenhum nome de arquivo correspondente que contenha uma nova linha.fonte
--exclude='*.html'
faria com que/var/foo/dir.html/foo.pdf
não sejam contados como as exclusões também afetam passagem de diretório, também, o uso do disco de diretórios, incluindo/var/foo
em si seriam contabilizados)Você pode deixar o shell expandir os arquivos:
No entanto, como você pode ver, isso indica que o tamanho do arquivo é cerca de 1000 vezes maior que o criado. Uma opção melhor é usar a
-b
opção:Grandes tamanhos de arquivos ainda serão exibidos na forma legível por humanos - por exemplo
173K
.fonte
du
mostra o uso do disco de cada arquivo (na maioria dos sistemas de arquivos, esse é o tamanho do arquivo arredondado para o próximo múltiplo do tamanho do bloco). Com a opção-b
,du
mostra o tamanho de cada arquivo.