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
phuclv
la source

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.

Félix
la source
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
1
Pour conclure
MariusMatutiae
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

Jan.
la source
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.

Dennis Williamson
la source
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
14

essayez ls -shRun format lisible par l'homme récursif.

Trieur
la source
4
OP a déclaré qu'il n'y avait pas -hde Tru64 et l'a fait plus de deux ans avant que cette réponse ne soit affichée.
un CVn
3
C'est ma responsabilité d'aider ceux qui arrivent ici avec la même recherche google.
Sorter
8

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

n0pe
la source
5

du -sm filename.txt

Éther
la source
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.

Keng
la source
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.

Rob Jones
la source
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
Evan
la source
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.

SKN
la source
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