É simplesmente porque passar de nomes de arquivos para números de inode é difícil no espaço do usuário e você não pode ler inodes a partir daí?
É simplesmente porque passar de nomes de arquivos para números de inode é difícil no espaço do usuário e você não pode ler inodes a partir daí?
Respostas:
A implementação do du (1) do GNU coreutils suportará a opção --inodes na próxima versão (> 8.21) ... Acabei de atualizar o patch para o Git upstream ( http://git.sv.gnu.org/ cgit / coreutils.git / commit /? id = 333dc83d ). Veja http://lists.gnu.org/archive/html/coreutils/2013-07/msg00087.html
> 8.21
ou ≥ 8.21
?
Use df
, não du
!
du
significa "uso do disco". É o df
que significa "sem disco" e verificará o sistema de arquivos adequadamente. Incluindo o uso do inode com a -i
opção!
Caso contrário, faça:
find thedirectory -exec ls -di {} \;|awk '{print $1}'|sort|uniq|wc -c
ou similar
find|wc -l
, então ... É claro que você precisará contabilizar arquivos com vários links. Mas sua pergunta realmente não faz sentido.
Isso não fornecerá uma resposta exata - em particular, equipara entradas de diretório a arquivos e, portanto, conta duas vezes com links físicos, além de ter problemas com feeds de linha nos nomes de arquivo / diretório - mas provavelmente é "bom o suficiente" para a maioria dos propósitos:
find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -n
Classifica por contagem de inode (sic). se você deseja uma ordem classificada em diretório tradicional:
find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -k2
Geralmente, eu quero algo assim quando uma unidade está ficando sem inodes e quero saber onde eles estão sendo usados. Para esse efeito, algumas pequenas imprecisões geralmente não são um grande problema.
Deve ser possível usar "find -ls" e analisar os números de inode na lista para eliminar duplicatas, se você quiser algo mais preciso.