Comment déterminer la taille totale d'un répertoire (dossier) à partir de la ligne de commande?

677

Existe-t-il une commande simple pour afficher la taille totale totale (utilisation du disque) de tous les fichiers d’un répertoire (dossier)?

J'ai essayé ceux-ci et ils ne font pas ce que je veux:

  • ls -l , qui affiche uniquement la taille des fichiers individuels dans un répertoire, ni
  • df -h , qui affiche uniquement l'espace libre et utilisé sur mes disques.
posée David Barry 05.08.2010 - 20:20
la source

11 réponses

1072

La commande du "résume l'utilisation du disque de chaque fichier, récursivement pour les répertoires, par exemple,

du -hs /path/to/directory
  • -h consiste à obtenir les nombres "lisibles par l'homme", par ex. obtenir 140M au lieu de 143260 (taille en Ko)
  • -s est pour résumé (sinon vous aurez non seulement la taille du dossier mais aussi pour tout dans le dossier séparément)

En utilisant -h , vous pouvez trier les valeurs lisibles par un humain en utilisant

du -sh | sort -h

L'indicateur -h sur sort tiendra compte des valeurs de taille "lisibles par l'homme".

Si vous souhaitez éviter de répertorier de manière récursive tous les fichiers et répertoires, vous pouvez fournir le paramètre --max-depth pour limiter le nombre d'éléments affichés. Le plus souvent, --max-depth=1

du -sh --max-depth=1 /path/to/directory
    
réponse donnée Marcel Stimberg 05.08.2010 - 20:27
la source
138

Récemment, j'ai trouvé un excellent outil interactif basé sur ncurses, qui vous donne rapidement un aperçu de la taille des répertoires. Recherche de ce type d’outil depuis des années.

  • explorer rapidement la hiérarchie des fichiers
  • vous pouvez supprimer par exemple d'énormes fichiers temporaires depuis l'intérieur de l'outil
  • extrêmement rapide

Pensez-y comme baobab pour la ligne de commande:

apt-get install ncdu
    
réponse donnée geekQ 11.10.2012 - 09:24
la source
42

Cela permet de trouver la taille de manière récursive et de la placer à côté de chaque nom de dossier, ainsi que la taille totale en bas, tous au format humain

du -hsc *
    
réponse donnée Brad 19.12.2014 - 17:32
la source
14

Profitez!

du foldername

Plus d’informations sur cette commande ici

    
réponse donnée myusuf3 05.08.2010 - 20:22
la source
7

tree est une autre commande utile pour ce travail:

Installez-le simplement via sudo apt-get install tree et tapez ce qui suit:

tree --du -h /path/to/directory
...
...

33.7M used in 0 directories, 25 files

De man tree :

-h    Print  the size of each file but in a more human readable way, e.g. appending a size letter for kilo‐
      bytes (K), megabytes (M), gigabytes (G), terabytes (T), petabytes (P) and exabytes (E).

--du  For each directory report its size as the accumulation of sizes of all its files and  sub-directories
      (and their files, and so on). The total amount of used space is also given in the final report (like
      the 'du -c' command.)
    
réponse donnée αғsнιη 27.01.2015 - 13:37
la source
5

Voici ce que j'utilise pour imprimer la taille totale, le dossier et la taille du fichier:

$ du -sch /home/vivek/* | sort -rh

Détails

 ------------------------------------------------------------
   -c, --total
          produce a grand total
   -h, --human-readable
          print sizes in human readable format (e.g., 1K 234M 2G)
   -s, --summarize
          display only a total for each argument
 -------------------------------------------------------------
   -h, --human-numeric-sort
          compare human readable numbers (e.g., 2K 1G)
   -r, --reverse
          reverse the result of comparisons

Sortie

 70M    total
 69M    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/lib
992K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/results
292K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/target
 52K    /home/vivek/Downloads/gatling-charts-highcharts-bundle-2.2.2/user-files
    
réponse donnée vivekyad4v 06.10.2016 - 16:05
la source
3

Les réponses ont mis en évidence que du est l'outil permettant de trouver la taille totale d'un répertoire. Cependant, il y a quelques facteurs à considérer:

  • Parfois, la sortie du peut être trompeuse car elle rapporte l’espace alloué par le système de fichiers, qui peut être différent de la somme des tailles des fichiers individuels. En règle générale, le système de fichiers alloue 4096 octets à un fichier même si vous n’en avez stocké qu’un seul!

  • Différences de sortie dues à la puissance de 2 et à la puissance de 10 unités. Le commutateur -h à du divise le nombre d'octets par 2 ^ 10 (1024), 2 ^ 20 (1048576) etc. pour donner une sortie lisible par l'homme. Beaucoup de gens pourraient être plus habitués à voir des puissances de 10 (par exemple 1K = 1000, 1M = 1000000) et être surpris par le résultat.

Pour trouver la somme totale des tailles de tous les fichiers d’un répertoire, en octets, faites:

find <dir> -ls | awk '{sum += } END {print sum}'

Exemple:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += } END {print sum}'
249008169
    
réponse donnée pdp 04.02.2016 - 19:56
la source
1

Pour seulement la taille du répertoire dans un format lisible, utilisez ce qui suit:

du -hs directoryname

Ce n'est probablement pas dans la section correcte, mais depuis la ligne de commande, vous pouvez essayer:

ls -sh filename

Le -s est la taille et le -h est lisible par l'homme.

Utilisez -l pour afficher la liste ls , comme ci-dessous:

ls -shl
    
réponse donnée Shiv Singh 12.05.2016 - 11:09
la source
0

du /foldername est la commande standard pour connaître la taille d'un dossier. Il est recommandé de rechercher les options en lisant la page de manuel:

man du

Vous devez lire la page de manuel (disponible en ligne ) avant d’utiliser la commande.

    
réponse donnée Balaswamy vaddeman 05.12.2011 - 10:17
la source
0

Voici un script POSIX qui fonctionnera avec:

  • Un fichier
  • Fichiers
  • Un répertoire
  • Répertoires
#!/bin/sh
ls -ARgo "[email protected]" | awk '{q += } END {print q}'

Source

    
réponse donnée Steven Penny 27.03.2017 - 13:48
la source
-2

Le meilleur que je pense est le suivant:

du -h directory_name | tail -n1

Cela vous montrera uniquement la taille du répertoire qui vous intéresse et n'imprimera pas les tailles des répertoires et des fichiers dans ce répertoire.

Je devrais ajouter que si la taille du dossier est grande, alors cela prend plus de temps. Vous devez être patient pour que cette commande fonctionne. Tout comme toute autre commande Unix, vous pouvez connaître le temps total de ce processus en utilisant time avant cette commande:

time du -h directory_name | tail -n1
    
réponse donnée Peaceful 19.12.2014 - 07:35
la source

Lire d'autres questions sur les étiquettes