Comment obtenir la taille d'un répertoire à Linux

Comment obtenir la taille d'un répertoire à Linux
Connaître la taille d'un répertoire dans Linux n'est pas aussi simple qu'il y paraît. La commande «ls -s» répertorie les fichiers et les sous-répertoires avec leurs tailles. Cependant, les tailles (environ 4096 octets) données pour les répertoires ne sont pas d'utilisation du disque. La taille observée pour un répertoire est la taille des méta-données du répertoire.

Les métadonnées sont des données sur les données. La taille apparente est la taille des données qui comptent à l'utilisateur ordinaire de l'ordinateur. Le contenu (texte) des lettres, images, vidéos, etc. de l'utilisateur, etc., constituer la taille apparente. Ces données ne sont pas conservées arbitrairement dans l'ordinateur. Les données apparentes doivent être conservées de manière contrôle. Il doit être identifiable. Il doit être complet. Il y a d'autres exigences pour cela. Certaines données supplémentaires sont nécessaires pour réaliser ces exigences supplémentaires, et ces données supplémentaires sont les méta-données.

N'oubliez pas, il n'y a qu'un seul répertoire dans un volume. Les autres sont des sous-répertoires. Le répertoire racine donne naissance à des sous-répertoires, qui donnent naissance à d'autres sous-répertoires en baisse. Cependant, les sous-répertoires sont généralement simplement appelés répertoires. Et donc, il n'y a qu'un seul arbre d'annuaire.

Ainsi, «ls -s» n'est pas utile pour obtenir la taille d'un répertoire. Quelle commande est alors utile? - La commande du du. «Du» signifie l'utilisation du disque. Il imprime l'utilisation du disque du répertoire.

Cet article explique les différentes caractéristiques de la commande DU dans Linux, qui fournit les différentes façons du programmeur de connaître les tailles des répertoires et leurs sous-répertoires. Bash est le shell utilisé pour les échantillons de code de cet article.

Contenu de l'article

  • DU sans option ni argument
  • Taille des autres répertoires
  • taille apparente
  • La commande sudo
  • Excluant les entrées par taille
  • exclure = modèle
  • Conclusion

DU sans option ni argument

Le répertoire de travail actuel est le répertoire dans lequel l'utilisateur travaille actuellement. L'invite montre normalement le répertoire de travail actuel. Taping DU sans aucune option et argument, comme ainsi:

du

puis appuyer sur la touche Entrée affichera l'utilisation du disque pour toutes les sous-répertoires du répertoire de travail actuel. Il affichera ces informations pour le sous-arbre du répertoire de travail actuel. Un point à l'écran représente le répertoire de travail actuel.

Chaque chemin du sous-arbre est représenté en ligne, à l'affichage. Chaque ligne commence par la taille du répertoire (qui est le nom de famille dans le chemin). L'affichage peut être quelque chose comme:

8 ./ dir1 / dir2 / dir3 / dir4
12 ./ dir1 / dir2 / dir3
16 ./ dir1 / dir2
20 ./ dir1

Notez qu'il n'est pas clair si la taille est en octets ou kilobytes ou mégaoctets ou gigaoctets. Kilobytes de symbole, k signifie 1024 octets; Mégaoctets de symbole, m signifie 1 048 576 octets; Gigaoctets de symbole, G signifie 1 073 741 824 octets. Pour que les multiples soient indiqués, l'option -h (commutateur) doit être utilisée, comme suit:

du -h

L'affichage serait alors ainsi:

8.0k ./ dir1 / dir2 / dir3 / dir4
12K ./ dir1 / dir2 / dir3
16K ./ dir1 / dir2
20K ./ dir1

Lorsque l'option -H est utilisée, les tailles sont censées être sous une forme lisible.

Remarque: Avec l'option -all, la commande DU donnera également une utilisation du disque pour les fichiers; Cependant, l'utilisation du disque pour les fichiers ne sera pas abordée dans cet article.

Taille des autres répertoires

Un chemin absolu typique pour un volume Linux est le suivant:

/ Home / John / Dirone / Dirtwo / DirThe / Dirfour

Le premier / est le répertoire racine. Ce répertoire a des sous-répertoires immédiats, y compris le répertoire domestique. Le répertoire domestique a le répertoire de l'utilisateur. Si le nom de l'utilisateur est John, alors il peut nommer le répertoire de l'utilisateur, John. Le répertoire de l'utilisateur est identifié par ~. Ainsi, l'utilisateur peut utiliser la commande «CD ~» pour atteindre son répertoire à partir de n'importe quel répertoire. Dirone est un répertoire créé par l'utilisateur. L'utilisateur peut également créer d'autres répertoires à ce niveau. Dirtwo, DirThere et Dirfour sont des sous-répertoires de leurs répertoires précédents, créés par l'utilisateur.

L'utilisateur peut connaître la taille de tout autre répertoire et ses sous-répertoires (sous-arbre) de n'importe quel répertoire, en contournant le chemin absolu comme un argument. Par exemple, si l'utilisation du disque est nécessaire,

/ Home / John / Dirone / Dirtwo

alors la commande serait:

du -h / home / John / dirone / dirtwo

ou

du -h ~ / dirone / dirtwo

où ~ représente le répertoire de l'utilisateur.

Pour utiliser un chemin relatif, l'utilisateur doit déjà être dans le répertoire parent correspondant. Par exemple, si l'invite affiche,

John @ hôte: ~ / dirone $

ce qui signifie que l'utilisateur est au répertoire, / home / John / dirone, alors la commande suivante donnera le même résultat que la commande ci-dessus:

du -h Dirtwo

Les chemins seraient toujours relatifs. Pour afficher les mêmes informations pour le répertoire actuel, utilisez aucun argument ou utilisez le point.

Ce schéma peut être utilisé pour obtenir la taille d'un seul répertoire, le dernier dans un chemin (précédé par le chemin). Il est possible d'obtenir la taille d'un répertoire au milieu d'un chemin - voir «exclure = modèle» ci-dessous.

Total

Une grande taille totale de tous les répertoires impliqués peut être produit. Pour la situation ci-dessus, la commande serait:

du -h -

taille apparente

La taille apparente est généralement plus petite que l'utilisation du disque. Cependant, dans certaines situations, la taille apparente est plus grande que l'utilisation du disque; Raison - Voir plus tard. La commande pour obtenir les tailles apparentes pour le chemin relatif ci-dessus serait:

Du -h - Dirtwo de taille apparente

Profondeur maximale

Avec -max-Depth = 0, Du imprime la taille du répertoire de travail actuel; avec Du -max-Depth = 1, Du imprime la taille du répertoire de travail actuel et les tailles de toutes ses sous-répertoires de premier niveau; avec -max-Depth = 2, DU imprime la taille du répertoire de travail actuel et les tailles de toutes ses sous-répertoires de premier niveau, et de toutes ses sous-répertoires de deuxième niveau; avec -max-Depth = 3, DU imprime la taille du répertoire de travail actuel et tous ses sous-répertoires de premier niveau, et tous ses sous-répertoires de deuxième niveau, et de tous ses sous-répertoires de troisième niveau; Cela se poursuit avec une valeur croissante de max-profondeur. Un exemple de son utilisation est:

du -h --max-depth = 2

La commande sudo

L'un des répertoires avec ses propres sous-répertoires dans le répertoire racine est var. Si l'utilisateur type

du -h / var

Et appuyez sur Entrée, il se rendra compte que l'autorisation est refusée pour certains répertoires. C'est-à-dire qu'il ne peut pas connaître les tailles de certains répertoires. L'autorisation est refusée car l'utilisateur n'est pas le superutilisateur. Le superutilisateur a le privilège de voir les tailles (utilisation du disque) de ces répertoires. Ainsi, pour que l'utilisateur acquière ce privilège, il doit utiliser la commande sudo comme suit:

sudo du -h / var

Si le shell demande à l'utilisateur son mot de passe, l'utilisateur doit taper le mot de passe et appuyer sur Entrée. Avec la commande sudo, l'utilisateur ordinaire (programmeur) peut voir les tailles de tous les répertoires du répertoire var et des répertoires similaires.

Excluant les entrées par taille

L'option «-threshold = size» ne permettra pas. Pour le chemin,

/ Home / John / Dirone / Dirtwo / DirThe / Dirfour

avec l'invite à "John @ hôte: ~ $", alors

du -h --threshold = 12k dirone

où 12k signifie 12 kilo-kilo-kilobytes, n'affichera pas la ligne pour un répertoire dont l'utilisation du disque est inférieure à 12k.

-exclure = modèle

Cette option et cette valeur peuvent omettre les lignes de répertoire que l'utilisateur ne veut pas dans la liste.

Pour omettre la ligne du dernier répertoire, dirfour du chemin

/ Home / John / Dirone / Dirtwo / DirThe / Dirfour

La commande doit être:

du -h --exclude = dirone / dirtwo / dirtre / dirfour dirone

Le résultat sera quelque chose comme,

4.0k dirone / dirtwo / dirThere
8.0K Dirone / Dirtwo
12K Dirone

Remarque: les tailles n'ont pas inclus la taille du dernier répertoire de niveau (dirfour) du chemin.

Pour que les tailles des répertoires de profondeur supérieure et de leurs sous-arbres ne disposent pas des répertoires de profondeur inférieure dans l'option. Donc avec la commande,

du -h --exclude = dirone / dirtwo / dirthree dirone
La sortie sera quelque chose comme,
4.0K Dirone / Dirtwo
8K Dirone

Remarque: les tailles ont exclu les tailles des répertoires de levier inférieur de l'arbre.

Considérez à nouveau, le lien absolu,

/ Home / John / Dirone / Dirtwo / DirThe / Dirfour

La commande suivante obtiendra l'utilisation du disque du répertoire Dirtwo, qui est un répertoire dans le chemin. La commande est:

du -h --exclude = / home / John / dirone / dirtwo / * / home / John / dirone / dirtwo

L'argument a tous les répertoires précédents à celui en question. La valeur de l'exclusion a tous les répertoires précédents, se terminant par *, juste après celui en question. * signifie tous les sous-répertoires à ce niveau (et leurs sous-arbres). Le résultat sera quelque chose comme,

5.0K / Home / John / Dirone / Dirtwo

Conclusion

Essayer de connaître la taille d'un répertoire avec la commande «ls -s» est trompeur. Avec lui, seuls les méta-données du répertoire sont obtenues. Pour connaître l'utilisation du disque d'un répertoire, la commande DU doit être utilisée. Lorsqu'ils sont utilisés avec l'option -h, les tailles des répertoires sont lisibles. La taille apparente peut être obtenue en utilisant l'option de taille apparente. Sans aucune option et argument, la commande DU affiche simplement les tailles de tous les sous-répertoires du répertoire actuel, y compris celui du répertoire actuel. L'argument à «du» est le chemin qui peut commencer de la racine. Les options et certaines de leurs valeurs décident exactement quels répertoires sont traités. La commande sudo donne aux privilèges des superutilisateurs utilisateur ordinaires par défaut.