Impossible d'obtenir la taille d'un répertoire par ls
Question
Je lance la commande, sans succès, pour obtenir la taille des répertoires (fichiers appartiennent à l'intérieur de la taille d'un répertoire)
ls -lSrh
Je ne reçois que kilobits pour la taille des répertoires alors que leur contenu est plus que cela.
Comment pouvez-vous énumérer la taille des répertoires, y compris leur contenu dans le nombre par ls
La solution
du -sh directory_name
ls
va vous donner la taille du répertoire entrée , et non du contenu du répertoire. Sur la base de mon lait écrémé rapidement, il ne semble man ls
pas être un moyen de faire plonger vers le bas et <=> calculer la taille des répertoires (très probablement parce que ce serait une opération coûteuse).
Autres conseils
Si vous voulez obtenir la taille des répertoires, vous pouvez utiliser
du -sh
du -hs
est grand jusqu'à ce que vous avez un grand répertoire.
Par exemple, si vous stockez les fichiers de cache (par exemple le magasin de cache de système de fichiers pour Rails) ou les fichiers téléchargés, ... avec un schéma cloisonné, comme « cache / 123/456/789 / real_files » et vous avez beaucoup d'entre eux , est de prendre toujours du
, éventuellement bloquer tous les IO.
Je n'ai pas une meilleure solution, mais c'est à considérer avant d'exécuter ce sur le serveur de production pendant les heures de pointe.
Miser sur la réponse de Sean lumineux, vous pouvez faire ce qui suit (en BASH)
for each in $(echo */ | sed "s/ /\n/g" | sed "s/\///g"); do du -hs "$each"; done;
Cela obtenir un contenu complet du répertoire pour tous les répertoires dans le répertoire courant.