J'ai essayé d'obtenir la taille d'un répertoire (contenant des répertoires et sous-répertoires) en utilisant la commande ls
avec l'option l
. Il semble fonctionner pour les fichiers (ls -l file name
), mais si j'essaie d'obtenir la taille d'un répertoire (par exemple, ls -l /home
), Je n'obtiens que 4096 octets, bien qu'en tout il soit beaucoup plus gros.
du -sh file_path
Explication
du
(d isc sage) estime la consommation de l'espace file_pathLes options -sh
sont issus man du
):
-s, --summarize
display only a total for each argument
-h, --human-readable
print sizes in human readable format (e.g., 1K 234M 2G)
Pour vérifier plusieurs répertoires et voir le total, utilisez du -sch
:
-c, --total
produce a grand total
Utilisez simplement la commande du
:
du -sh -- *
vous donnera l'utilisation cumulative du disque de tous les répertoires, fichiers, etc. non cachés dans le répertoire actuel au format lisible par l'homme.
Vous pouvez utiliser la commande df
pour connaître l'espace libre dans le système de fichiers contenant le répertoire:
df -h .
du
est votre ami. Si vous voulez simplement connaître la taille totale d'un répertoire, sautez-y et exécutez:
du -hs
Si vous souhaitez également savoir quels sous-dossiers occupent combien d'espace disque?! Vous pouvez étendre cette commande à:
du -h --max-depth=1 | sort -hr
qui vous donnera la taille de tous les sous-dossiers (niveau 1). La sortie sera triée (le plus grand dossier en haut).
D'autres ont mentionné du
, mais je voudrais également mentionner Ncd - qui est une version ncurses de du
et fournit l'interactivité: vous pouvez explorer directement la hiérarchie des répertoires et voyez la taille des sous-répertoires.
La commande du
montre l'utilisation du disque sur le fichier.
Le -h
L'option affiche les résultats sous une forme lisible par l'homme (par exemple, 4k, 5M, 3G).
du -h (file name)
Tous les exemples ci-dessus vous indiqueront la taille des données sur le disque (c'est-à-dire la quantité d'espace disque utilisé par un fichier particulier, qui est généralement plus grande que la taille réelle du fichier). Il y a des situations où ceux-ci ne vous donneront pas un rapport précis, si les données ne sont pas réellement stockées sur ce disque particulier et que seules des références d'inode existent.
Dans votre exemple, vous avez utilisé ls -l sur un seul fichier, qui aura renvoyé la taille réelle du fichier, PAS sa taille sur le disque.
Si vous voulez connaître la taille réelle des fichiers, ajoutez l'option -b à du.
du -csbh .
personnellement, je pense que c'est mieux, si vous ne voulez pas utiliser ncdu
# du -sh ./*
df -h .; du -sh -- * | sort -hr
Cela montre combien d'espace disque il vous reste sur le lecteur actuel et vous indique ensuite combien chaque fichier/répertoire prend. par exemple.,
Filesystem Size Used Avail Use% Mounted on
/dev/sdb2 206G 167G 29G 86% /
115M node_modules
2.1M examples
68K src
4.0K webpack.config.js
4.0K README.md
4.0K package.json
I tilisez cette commande en tant que root :
Sudo ls -1d */ | Sudo xargs -I{} du {} -sh && Sudo du -sh
rechercher récursivement tous les fichiers du répertoire courant et résumer leur taille:
find -type f -print0 | xargs -0 stat --print='%s\n' | awk '{total+=$1} END {print total}'
Voici une fonction pour vos .bash_aliases
# du with mount exclude and sort
function dusort () {
DIR=$(echo $1 | sed 's#\/$##')
du -scxh $(mount | awk '{print $3}' | sort | uniq \
| sed 's#/# -- exclude=/#') $DIR/* | sort -h
}
exemple de sortie:
$ dusort /
...
0 /mnt
0 /sbin
0 /srv
4,0K /tmp
728K /home
23M /etc
169M /boot
528M /root
1,4G /usr
3,3G /var
4,3G /opt
9,6G total
pour les sous-répertoires:
$ dusort .
$ dusort /var/log/
Encore une variante:
du -h --max-dep=1
Voici un script POSIX qui fonctionnera avec:
ls -A -R -g -o "$@" | awk '{n1 += $3} END {print n1}'
Notez que du
affiche l'espace occupé par un répertoire sur le support, qui est généralement plus grand que la taille totale de tous les fichiers du répertoire, car du
prend en compte la taille de toutes les informations auxiliaires qui est stocké sur le support pour organiser le répertoire conformément au format du système de fichiers.
Si le système de fichiers est compressible, du
peut générer un nombre encore plus petit que la taille totale de tous les fichiers, car les fichiers peuvent être compressés en interne par le système de fichiers et donc prendre moins d'espace sur le support que les informations non compressées ils contiennent. Idem s'il y a des fichiers épars.
s'il y a des liens durs dans le répertoire, alors du
peut également imprimer une valeur plus petite car plusieurs fichiers différents dans le répertoire renvoient les mêmes données sur le support.
Pour obtenir la taille totale simple de tous les fichiers du répertoire, l'expression Shell d'une ligne suivante peut être utilisée (en supposant un système GNU):
find . ! -type d -print0 | xargs -r0 stat -c %s | paste -sd+ - | bc
ou encore plus court:
find . ! -type d -printf '%s\n' | paste -sd+ - | bc
Il additionne simplement la taille de tous les fichiers non-répertoire dans le répertoire (et ses sous-répertoires récursivement) un par un. Notez que pour les liens symboliques, il indique la taille du lien symbolique (pas du fichier vers lequel le lien symbolique pointe).
Vous pouvez utiliser
du -sh directory/
et
du -sh filename
pour connaître l'espace occupé par le dossier ou le fichier.
df -h
montrera l'utilisation du disque dans un format lisible par l'homme -h fait cela.
Il existe également un programme basé sur gui appelé Disk Usage Analyzer
.