ls-command: comment afficher la taille du fichier en mégaoctets?


161

Sous Unix (Tru64), comment faire en sorte que la lscommande affiche la taille du fichier en mégaoctets? Actuellement, je peux l'afficher en octets en utilisant les éléments suivants:

ls -la

Réponses:


247

Peut -h- être est-ce suffisant pour vous:

-h
Lorsqu'elle est utilisée avec l'option -l, utilisez les suffixes d'unité: octet, kilo-octet, mégaoctet, gigaoctet, téraoctet et pétaoctet afin de réduire le nombre de chiffres à trois ou moins en utilisant la base 2 pour les tailles.

ls -lah

Conseil général: Utilisez man commandnamepour lire le manuel / l'aide d'une certaine commande, par exemple ici man ls.


1
Merci, mais l'option -h ne semble pas exister sous Tru64 Unix.

8
Conseil général: installez les utilitaires GNU ...
reinierpost le

22
J'aime votre astuce sur l'utilisation de l'homme, mais en réalité, la recherche sur Google est bien plus rapide que l'utilisation de l'homme souvent (comme maintenant, lorsque j'ai trouvé ce résultat sur Google).
trusktr

4
Tout va bien pour Google, mais les pages de manuel sont finalement des systèmes / systèmes d'exploitation, même spécifiques à un hôte, généralement créés lors de la compilation ou de l'installation du logiciel, et font donc autorité pour le logiciel sur votre système particulier.
Nevin Williams


32

ls --block-size=Mimprime les tailles en mégaoctets, mais affiche 1 Mo également pour les valeurs inférieures à 1 Mo. Je ne sais pas si cette option est acceptable dans votre version UNIX de ls, cependant.

En fait, ls -lhimprime aussi les tailles en gigaoctets si le fichier est assez gros (enfin, de toute façon: sous Linux 64 bits, cela fonctionne:>)

Sur un nœud latéral: du -sh *affiche également les tailles de répertoire dans le répertoire actuel


Merci! J'avais besoin de surveiller les modifications de fichiers en direct dans un dossier et l'utilisation ls -hn'a plus de sens while true ; do ls -al --block-size=M ; sleep 1 ; done
lorsqu'un

15

Vous devrez utiliser awkpour faire le calcul pour vous:

ls -l | awk 'BEGIN{mega=1048576} $5 >= mega {$5 = $5/mega "MB"} {print}'

Cela n'affectera pas la sortie pour les fichiers plus petits que mega.

Vous devrez peut-être ajuster le numéro de champ pour qu'il corresponde à la manière dont vous avez lsdisposé. Vous pouvez changer megaà "1000000" si tel est votre préférence.

Cela imprimera plus de décimales que vous ne le souhaitez probablement. Vous pouvez implémenter une fonction d'arrondi.


3
Beaucoup moins élégant que ls -lhou ls --block-size=M, mais AWK est très utile!
Statwonk

Juste ce dont j'avais besoin. Toutes les autres solutions sont arrondies au Mo le plus proche, mais cela indique quelques décimales et est facilement personnalisable.
zeroimpl

3
C'est une solution intéressante pour les systèmes (AIX, je vous regarde) qui ne disposent pas de l'option -h.
Buggabill


8

essayez ls -lash, il imprime les tailles dans un format lisible par l'homme


5

du -sm filename.txt


1
arrondissez toujours la taille ... si la taille est inférieure à 1 Mo, disons 500K, elle imprimera également 1M
AnonGeek

5

Vous pouvez aussi taper

du -sh ./*

Ceci listera tous les dossiers du répertoire courant, avec un format lisible par l’homme, y compris les tailles de fichier plus connues en Kb, Mb, Gb.


2

Si vous ne voulez que la taille d'un fichier spécifique, la commande, une extrapolation triviale des réponses précédentes, est la suivante:

ls -sh nom du fichier (s)

-sest pour la taille et le hest pour Human Readable (comme mentionné ci-dessus à quelques reprises).

La sortie ressemblera à ceci:

753M myfilename

Si vous omettez le ou les noms de fichier, le répertoire sera répertorié, en plaçant la taille de chaque fichier à côté de son nom, comme ce qui est ls -lafait quand invoqué sans arguments de nom de fichier.

J'espère que cela t'aides.


2
Cette question concerne Tru64 Unix et le PO a indiqué il y a presque cinq ans que l' -hoption n'existe pas lssur ce système.
G-Man

2
ls -l --block-size=MB 

Pour le --block-sizeparamètre:

  • utiliser MBpour 10 ^ 6
  • utiliser juste Mpour 2 ^ 20

Notez que cela ne montrera aucune décimale . En outre, tout élément supérieur à 0 Ko mais non supérieur à 1 Mo sera affiché sous la forme1MB . Pour cette raison, j'ai trouvé ls -l --block-size=kBplus utile.
DaAwesomeP

0

Si vous êtes simplement intéressé par la taille du fichier et que vous n'avez pas à utiliser la lscommande, essayez ce qui suit:

# echo "Hello World" > file.txt
# ls -l file.txt 
-rw-r--r-- 1 user user 12 Mar 10 11:32 file.txt
# stat --printf='%s\n' file.txt
12

Cela imprimera la taille du fichier sans avoir à analyser quoi que ce soit.


OP veut la taille en Mo, peut-être une option statistique produira-t-elle la taille sous une forme lisible par l'homme?
Archemar

Ah, c'était muet de moi. Merci d'avoir attrapé ça. stat n'a pas l'option de manipuler la taille en utilisant --printf ou toute autre option pour autant que je sache. Il faudrait probablement utiliser une combinaison des utilitaires de ligne de commande printf et bc. Dans ce cas, pourquoi s'embêter. ls et cut / awk seraient plus rapides.
SKN
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.