human
Quelle commande dois-je utiliser pour trouver la taille de tous les fichiers (récursivement) dans un répertoire Linux ou Mac OS X
gpt
La version BSD de ```du``` utilisée dans OS X rapporte la taille en blocs de 512 octets - les tailles sont essentiellement arrondies à la valeur de 512 octets suivante. Cela vous indique l'espace sur le disque, qui est plus grand que la quantité de données. Si vous avez beaucoup de petits fichiers, la différence peut être importante.
Voici un exemple.
Voici la valeur avec ```du``` normal. Elle est en blocs de 512 octets :
```$ du -s
248   .
```
Le drapeau ```-h``` donne un nombre plus lisible, en kilo-octets. Comme prévu, c'est la moitié du nombre de blocs de 512 octets :
```$ du -hs
124K  .
```
Enfin, vous pouvez utiliser ```find``` et ```awk``` pour obtenir la somme des octets réels dans les fichiers. C'est un peu lent, mais ça fonctionne :
```$ find . -type f -exec ls -l {} \; | awk '{sum += $5} END {print sum}'
60527
```
Cette valeur correspond exactement au nombre rapporté par la fenêtre "Obtenir des informations" du Finder. (Il n'y a pas de fourches étranges ou de xattrs dans cet ensemble de fichiers.) Elle est significativement plus petite que la valeur rapportée par ```du```.
Voici comment cela fonctionne : il obtient une liste de tous les fichiers et les passe à ```ls -l``` ; puis ```awk``` est utilisé pour compter les octets. Le drapeau ```-type f``` est là pour que seuls les fichiers (et non les répertoires) soient envoyés à ```ls```. Sans ce drapeau, il enverra également les noms de répertoires à ```ls```, et chaque fichier sera répertorié deux fois : une fois en tant que fichier individuel, et une fois en tant qu'élément du répertoire.
La version GNU de ```du``` peut donner des valeurs en octets réels au lieu de blocs. Il est regrettable que la version BSD de ```du``` ne soit pas aussi flexible.