web-dev-qa-db-fra.com

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

Existe-t-il une commande simple permettant d’afficher la taille totale agrégée (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.
755
David Barry

La commande du "résume l’utilisation du disque de chaque fichier, de manière récursive pour les répertoires", par exemple,

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

Lorsque vous utilisez -h, vous pouvez trier les valeurs lisibles par l'homme à l'aide de

du -h | sort -h

L'indicateur -h sur sort tiendra compte des valeurs de taille "Human Readable".


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 -h --max-depth=1 /path/to/directory
1211
Marcel Stimberg

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. Recherché ce genre d'outil pendant des années.

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

Pensez-y comme baobab pour la ligne de commande:

apt-get install ncdu
158
geekQ

Cela trouve la taille de manière récursive et le met à côté de chaque nom de dossier, avec la taille totale en bas, le tout au format humain.

du -hsc *
51
Brad

Prendre plaisir!

du foldername

Plus d'informations sur cette commande ici

16
myusuf3

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 arbre de l'homme :

-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.)
11
αғsнιη

Voici ce que j'utilise pour imprimer la taille totale, du dossier et 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
9
vivekyad4v

Les réponses ont clairement montré que du est l'outil permettant de trouver la taille totale d'un répertoire. Cependant, il y a deux facteurs à prendre en compte:

  • De temps en temps, la sortie de du peut être trompeuse, car elle indique l'espace alloué par le système de fichiers, qui peut être différent de la somme des tailles des fichiers individuels. Typiquement, le système de fichiers allouera 4096 octets à un fichier même si vous n'y avez stocké qu'un seul caractère!

  • Différences de sortie dues à une puissance de 2 et à une puissance de 10 unités. Le -h passe à du divise le nombre d'octets par 2 ^ 10 (1024), 2 ^ 20 (1048576), etc., afin de 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, procédez comme suit:

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

Exemple:

$ du -s -B 1
255729664

$ find .  -ls | awk '{sum += $7} END {print sum}'
249008169
4
pdp

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 bonne section, mais à partir de 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
1
Shiv Singh

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 devriez lire la page de manuel (disponible en ligne ) avant d’utiliser la commande.

0
Balaswamy vaddeman

Voici un script POSIX qui fonctionnera avec:

  • Un fichier
  • Des dossiers
  • Un annuaire
  • Répertoires
#!/bin/sh
ls -ARgo "$@" | awk '{q += $3} END {print q}'

Source

0
Steven Penny

Si votre répertoire souhaité contient plusieurs sous-répertoires, utilisez ce qui suit:

$ cd ~/your/target/directory
$ du -csh 

-c, --total produit un total général
- s, --summarize n'affiche qu'un total pour chaque argument
- h, - formats d’impression lisibles par l’homme dans un format lisible par l’homme (par exemple, 1K 234M 2G)

ce qui produirait alors un total global de l'utilisation de la mémoire par tous les fichiers/dossiers du répertoire en cours.

0
kmario23