in

Comment obtenir la taille d’un fichier ou d’un répertoire sous Linux

Fatmawati Achmad Zaenuri / Shutterstock

Lorsque vous utilisez Linux du , vous obtenez à la fois l’utilisation réelle du disque et la taille réelle d’un fichier ou d’un répertoire. Nous expliquerons pourquoi ces valeurs ne sont pas les mêmes.

Utilisation réelle du disque et taille réelle

La taille d’un fichier et l’espace qu’il occupe sur votre disque dur sont rarement les mêmes. L’espace disque est alloué en blocs. Si un fichier est plus petit qu’un bloc, un bloc entier lui est toujours alloué car le système de fichiers n’a pas une unité plus petite de biens immobiliers à utiliser.

À moins que la taille d’un fichier ne soit un multiple exact de blocs, l’espace qu’il utilise sur le disque dur doit toujours être arrondi au bloc entier suivant. Par exemple, si un fichier est plus grand que deux blocs mais plus petit que trois, il faut toujours trois blocs d’espace pour le stocker.

Deux mesures sont utilisées en fonction de la taille du fichier. Le premier est la taille réelle du fichier, qui correspond au nombre d’octets de contenu qui composent le fichier. Le second est la taille effective du fichier sur le disque dur. Il s’agit du nombre de blocs du système de fichiers nécessaires pour stocker ce fichier.

Un exemple

Regardons un exemple simple. Nous redirigerons un seul caractère dans un fichier pour créer un petit fichier:

echo "1" > geek.txt

Maintenant, nous allons utiliser la liste au format long, ls, pour regarder la longueur du fichier:

ls -l geek.txt

La longueur est la valeur numérique qui suit le dave dave entrées, qui est de deux octets. Pourquoi y a-t-il deux octets lorsque nous n’envoyons qu’un seul caractère au fichier? Jetons un coup d’œil à ce qui se passe à l’intérieur du fichier.

Nous utiliserons le hexdump commande, qui nous donnera un nombre exact d’octets et nous permettra de «voir» caractères non imprimables sous forme de valeurs hexadécimales. Nous utiliserons également le -C (canonique) pour forcer la sortie à afficher les valeurs hexadécimales dans le corps de la sortie, ainsi que leurs équivalents en caractères alphanumériques:

hexdump -C geek.txt

La sortie nous montre que, à partir de l’offset 00000000 dans le fichier, il y a un octet qui contient une valeur hexadécimale de 31 et un autre qui contient une valeur hexadécimale de 0A. La partie droite de la sortie représente ces valeurs sous forme de caractères alphanumériques, dans la mesure du possible.

La valeur hexadécimale de 31 est utilisée pour représenter le chiffre un. La valeur hexadécimale de 0A est utilisée pour représenter le caractère de saut de ligne, qui ne peut pas être affiché comme un caractère alphanumérique, donc il est affiché comme un point (.) À la place. Le caractère de saut de ligne est ajouté par echo . Par défaut, echocommence une nouvelle ligne après avoir affiché le texte dont il a besoin pour écrire dans la fenêtre du terminal.

Cela correspond à la sortie de ls et est d’accord avec la longueur de fichier de deux octets.

Maintenant, nous allons utiliser le du commande pour regarder la taille du fichier:

du geek.txt

Il dit que la taille est de quatre, mais quatre de quoi?

Il y a des blocs, puis il y a des blocs

Lorsque du indique la taille des fichiers en blocs, la taille qu’il utilise dépend de plusieurs facteurs. Vous pouvez spécifier la taille de bloc à utiliser sur la ligne de commande. Si tu ne force pas du pour utiliser une taille de bloc particulière, il suit un ensemble de règles pour décider laquelle utiliser.

Tout d’abord, il vérifie les éléments suivants Variables d’environnement:

  • DU_BLOCK_SIZE
  • TAILLE DE BLOC
  • TAILLE DE BLOC

Si l’un de ces éléments existe, la taille du bloc est définie et du arrête de vérifier. Si aucun n’est défini, du la valeur par défaut est une taille de bloc de 1 024 octets. À moins que, c’est-à-dire une variable d’environnement appelée POSIXLY_CORRECT est réglé. Si c’est le cas, du la valeur par défaut est une taille de bloc de 512 octets.

Alors, comment savoir lequel est utilisé? Vous pouvez vérifier chaque variable d’environnement pour le résoudre, mais il existe un moyen plus rapide. Comparons les résultats à la taille de bloc que le système de fichiers utilise à la place.

Pour découvrir la taille de bloc utilisée par le système de fichiers, nous utiliserons le tune2fs programme. Nous utiliserons ensuite le -l (liste superbloc), acheminez la sortie à travers grep, et alors imprimer des lignes contenant le mot «Bloquer».

Dans cet exemple, nous allons regarder le système de fichiers sur la première partition du premier disque dur, sda1, et nous devrons utiliser sudo:

sudo tune2fs -l /dev/sda1 | grep Block

La taille de bloc du système de fichiers est de 4 096 octets. Si nous divisons cela par le résultat que nous avons obtenu du (quatre), il montre le du la taille de bloc par défaut est de 1 024 octets. Nous savons maintenant plusieurs choses importantes.

Premièrement, nous savons que la plus petite quantité d’immobilier de système de fichiers pouvant être consacrée au stockage d’un fichier est de 4 096 octets. Cela signifie que même notre petit fichier de deux octets occupe 4 Ko d’espace sur le disque dur.

La deuxième chose à garder à l’esprit est les applications dédiées à la création de rapports sur les statistiques du disque dur et du système de fichiers, telles que du, ls, et tune2fs, peut avoir différentes notions de ce que signifie «bloc». le tune2fs l’application signale la taille réelle des blocs du système de fichiers, tandis que ls et du peut être configuré ou forcé à utiliser d’autres tailles de bloc. Ces tailles de bloc ne sont pas destinées à être liées à la taille de bloc du système de fichiers; ce ne sont que des «morceaux» que ces commandes utilisent dans leur sortie.

Enfin, outre l’utilisation de tailles de bloc différentes, les réponses de du et tune2fs transmettre le même sens. le tune2fs résultat était un bloc de 4096 octets, et le du le résultat était quatre blocs de 1 024 octets.

Utilisant du

Sans paramètres ni options de ligne de commande, du répertorie l’espace disque total utilisé par le répertoire actuel et tous les sous-répertoires.

Jetons un œil à un exemple:

du

La taille est indiquée dans la taille de bloc par défaut de 1 024 octets par bloc. L’arborescence de sous-répertoires entière est parcourue.

Utilisant du sur un autre répertoire

Si tu veux du pour signaler un répertoire différent de celui actuel, vous pouvez passer le chemin du répertoire sur la ligne de commande:

du ~/.cach/evolution/

Utilisant du sur un fichier spécifique

Si tu veux du pour créer un rapport sur un fichier spécifique, transmettez le chemin d’accès à ce fichier sur la ligne de commande. Vous pouvez également transmettre un modèle de coque à un groupe de fichiers sélectionné, tel que *.txt:

du ~/.bash_aliases

Rapports sur les fichiers dans les répertoires

Pour avoir du rapport sur les fichiers du répertoire courant et des sous-répertoires, utilisez le -a (tous les fichiers) option:

du -a

Pour chaque répertoire, la taille de chaque fichier est indiquée, ainsi qu’un total pour chaque répertoire.

Limitation de la profondeur de l’arborescence de répertoires

Tu peux dire du pour lister l’arborescence des répertoires avec une certaine profondeur. Pour ce faire, utilisez le -d (profondeur max) et fournissez une valeur de profondeur en tant que paramètre. Notez que tous les sous-répertoires sont analysés et utilisés pour calculer les totaux rapportés, mais ils ne sont pas tous répertoriés. Pour définir une profondeur de répertoire maximale d’un niveau, utilisez cette commande:

du -d 1

La sortie répertorie la taille totale de ce sous-répertoire dans le répertoire actuel et fournit également un total pour chacun.

Pour lister les répertoires d’un niveau plus profond, utilisez cette commande:

du -d 2

Définition de la taille de bloc

Vous pouvez utiliser le block option pour définir une taille de bloc pour du pour l’opération en cours. Pour utiliser une taille de bloc d’un octet, utilisez la commande suivante pour obtenir les tailles exactes des répertoires et des fichiers:

du --block=1

Si vous souhaitez utiliser une taille de bloc d’un mégaoctet, vous pouvez utiliser le -m (mégaoctet), qui est identique à --block=1M:

du -m

Si vous souhaitez que les tailles soient indiquées dans la taille de bloc la plus appropriée en fonction de l’espace disque utilisé par les répertoires et les fichiers, utilisez le -h (lisible par l’homme) option:

du -h

Pour voir la taille apparente du fichier plutôt que la quantité d’espace disque utilisé pour stocker le fichier, utilisez le --apparent-size option:

du --apparent-size

Vous pouvez combiner cela avec le -a (tous) pour voir la taille apparente de chaque fichier:

du --apparent-size -a

Chaque fichier est répertorié, ainsi que sa taille apparente.

Afficher uniquement les totaux

Si tu veux du pour ne rapporter que le total du répertoire, utilisez le -s (résumer) option. Vous pouvez également combiner cela avec d’autres options, telles que -h (lisible par l’homme) option:

du -h -s

Ici, nous allons l’utiliser avec le --apparent-size option:

du --apparent-size -s

Affichage des heures de modification

Pour voir l’heure et la date de création ou de dernière modification, utilisez le --time option:

du --time -d 2

Des résultats étranges?

Si vous voyez des résultats étranges du , en particulier lorsque vous croisez les tailles avec la sortie d’autres commandes, cela est généralement dû aux différentes tailles de bloc auxquelles différentes commandes peuvent être définies ou à celles auxquelles elles par défaut. Cela pourrait également être dû aux différences entre la taille réelle des fichiers et l’espace disque requis pour les stocker.

Si vous avez besoin de faire correspondre la sortie d’autres commandes, expérimentez avec le --block option dans du.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment personnaliser et modifier les icônes de la barre d'état système dans Windows

Comment personnaliser et modifier les icônes de la barre d’état système dans Windows

Premiers pas dans le bricolage électronique: une liste d'achats

Premiers pas dans le bricolage électronique: une liste d’achats