GNU/Linux >> Tutoriels Linux >  >> Linux

quelle est la commande la plus fiable pour trouver la taille réelle d'un fichier linux

Il n'y a pas d'inexactitude ou de problème de fiabilité ici, vous comparez simplement deux nombres différents :la taille logique et la taille physique.

Voici l'illustration de Wikipedia pour les fichiers fragmentés :

ls montre les zones grises+vertes, la longueur logique du fichier. du (sans --apparent-size ) ne montre que les zones vertes, puisque ce sont celles qui occupent de l'espace.

Vous pouvez créer un fichier fragmenté avec dd count=0 bs=1M seek=100 of=myfile .

ls affiche 100 Mo, car c'est la longueur du fichier :

$ ls -lh myfile
-rw-r----- 1 me me 100M Jul 15 10:57 myfile

du affiche 0, car c'est la quantité de données qui lui est allouée :

$ du myfile
0 myfile

ls -l --block-size=M

vous donnera une liste de format long (nécessaire pour voir réellement la taille du fichier) et des tailles de fichier arrondies au MiB le plus proche .

Si vous voulez MB (10^6 octets) plutôt que MiB (2^20 octets) unités, utilisez --block-size=MB à la place.

Si vous ne voulez pas le M suffixe attaché à la taille du fichier, vous pouvez utiliser quelque chose comme --block-size=1M . Merci Stéphane Chazelas pour cette suggestion.

Ceci est décrit dans la page de manuel pour ls; man ls et recherchez SIZE . Il permet des unités autres que MB/MiB ainsi, et à première vue (je n'ai pas essayé cela), des tailles de bloc arbitraires également (vous pouvez donc voir la taille du fichier en nombre de blocs de 412 octets, si vous le souhaitez).

Notez que le --block-size le paramètre est une extension GNU au-dessus du ls du groupe ouvert , cela peut donc ne pas fonctionner si vous n'avez pas d'espace utilisateur GNU (ce que font la plupart des installations Linux). Le ls de GNU coreutils 8.5 prend en charge --block-size comme décrit ci-dessus.


Il existe plusieurs notions de taille de fichier, comme expliqué dans la réponse de cet autre guiy et le chiffre de la page wiki sur les fichiers épars.

Cependant, vous pouvez utiliser à la fois les commandes ls(1) et stat(1).

Si vous codez en C, envisagez d'utiliser les appels système stat(2) et lseek(2).

Voir aussi les références dans cette réponse.


Linux
  1. Quelle est la différence entre la commande locate et find sous Linux

  2. Quel est l'équivalent de la commande Linux File pour Windows ?

  3. Quelle est la commande unix pour savoir à quel fichier exécutable correspond une commande donnée ?

  4. Qu'est-ce qui pourrait amener la commande file sous Linux à signaler un fichier texte en tant que données binaires ?

  5. À quoi sert Linux test -a command test ?

Comment utiliser la commande touch sous Linux

Comment utiliser la commande Linux head

Comment utiliser la commande Linux diff

Qu'est-ce que la commande Linux Watch + Exemples

Qu'est-ce que la commande kill sous Linux ?

La commande Linux find Directory :Explication