A implementação do du (1) do GNU coreutils suportará a opção --inodes com o próximo lançamento (> 8.21) ... Acabei de empurrar o patch para o Git upstream ( link ). Consulte o link
É simplesmente porque ir de nomes de arquivos a números de inodes é difícil no espaço do usuário, e você não pode ler inodes de lá?
Use df
, não du
!
du
significa "uso do disco". É df
que significa "livre de disco" e verificará o sistema de arquivos corretamente. Incluindo o uso do inode com a opção -i
!
Caso contrário, faça:
find thedirectory -exec ls -di {} \;|awk '{print $1}'|sort|uniq|wc -c
ou similar
Isso não dará uma resposta exata - em particular, equaciona entradas de diretório com arquivos e duplica a contagem de links físicos, além de ter problemas com feeds de linha em nomes de arquivos / diretórios - mas provavelmente é "bom o suficiente" para mais propósitos:
find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -n
Isso classifica por inode (sic) count. se você quiser uma ordem tradicional ordenada por diretório:
find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -k2
Mais comumente eu quero algo assim quando uma unidade está ficando sem inodes e eu quero saber onde eles estão sendo usados. Para esse efeito, algumas imprecisões menores geralmente não são grandes problemas.
Deve ser possível usar "find -ls" e analisar os números de inode na listagem para eliminar duplicatas, se você quiser algo mais preciso.
Tags shell unix unix-utils