Comment créer une taille de fichier `ls` en mégaoctets?

442

De quelles commandes ai-je besoin pour que Linux lsaffiche la taille du fichier en Mo?

Paul Sheldrake
la source

Réponses:

513

ls -l --block-size=Mvous donnera une liste longue de format (nécessaire pour voir réellement la taille du fichier) et arrondit les tailles de fichier jusqu'au MiB le plus proche.

Si vous souhaitez utiliser des Mo (10 ^ 6 octets) plutôt que des unités MiB (2 ^ 20 octets), utilisez --block-size=MBplutôt.

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

Si vous souhaitez simplement que la taille des fichiers soit exprimée en unités "raisonnables", plutôt qu'en mégaoctets , vous pouvez utiliser -lhune liste longue et une taille lisible par l'homme . Il utilisera des unités de taille de fichier pour maintenir la taille des fichiers présentés avec environ 1-3 chiffres (vous verrez la taille des fichiers comme 6.1K, 151K, 7.1M, 15M, 1.5Get ainsi de suite.

Le --block-sizeparamètre est décrit dans la page de manuel de ls; man lset rechercher SIZE. Cela permet également d’utiliser des unités autres que MB / MiB, et à première vue (je n’ai pas essayé cela), des tailles de blocs arbitraires (vous pouvez donc voir la taille du fichier sous forme de blocs de 429 octets si vous le souhaitez). à).

Notez que les deux --block-sizeet -hsont des extensions GNU sur Open Groupls , cela risque donc de ne pas fonctionner si vous n'avez pas de domaine utilisateur GNU (comme la plupart des installations Linux). La version lsde GNU Coreutils 8.5 prend en charge --block-size et -h comme décrit ci-dessus. Merci à kojiro pour l'avoir signalé.

un CVn
la source
11
Une différence mérite peut-être d’être soulignée: faire afficher --block-size=Mun Msuffixe à côté de la taille et l’utiliser --block-size=1Mpour l’omettre. Il convient également de mentionner que vous avez besoin de GNU ls pour cela (la plupart des systèmes Linux non embarqués auront GNU ls).
Stéphane Chazelas
2
S'agirait-il de GNU ls? Standardls n'a pas un tel argument. Avec l' extension xsi, ls l' -sindicateur est indiqué, ce qui lui permet d'indiquer le nombre de blocs, mais il n'y a pas d'indicateur standard --block-size.
Kojiro
2
@kojiro GNU ls a --block-sizecomme coreutils 8.5, ce qui est installé sur mon système Debian Squeeze. Puisque la question était explicitement pour Linux et ne spécifiait rien d'autre, je dois admettre que je supposais un environnement utilisateur centré sur GNU Coreutils. J'ai mis à jour la réponse pour clarifier cela. (En outre, le groupe ouvert ne semble pas avoir -h non plus. :))
CVn
2
@EmanuelBerg, 1000 ^ 7 (10 ^ 21) est supérieur à 2 ^ 64 (soit ~ 10 ^ 19,27)
Stéphane Chazelas
4
Comme il est dit dans le dernier paragraphe de la réponse, @Tom --block-sizeest une extension GNU. Je soupçonne que Mac OS X n’utilise pas GNU ls.
un CVn
385

ls -lh donne des tailles de fichiers lisibles par l'homme, format long.

Il utilise les suffixes k, M, G et T (ou pas de suffixe pour les octets) selon les besoins, de sorte que le nombre reste petit, par exemple 1.4Kou 178M.

-h est une extension GNU coreutils, pas une base POSIX.

Notez que cela ne répond pas exactement à la question posée. Si vous voulez des tailles strictement en MiB, même pour des fichiers petits ou gigantesques, la réponse de Michael Kjörling le fait pour GNU coreutilsls .

Sirex
la source
4
Cela imprimera des tailles de fichier en Go pour tout ce qui est plus grand que juste au-dessous de 1,0 Go (je crois).
un CVn
5
@ MichaelKjörling Je ne vois pas cela comme une mauvaise réponse (même si je n'ai pas voté au vote). Parfois, le PO ne formule pas la question exactement comme il le devrait. Il était donc possible qu’il ne souhaite que des résultats lisibles par l’homme. Il a plutôt formulé cela comme "en MB".
Dason
5
Upvote. "Cela ne répond pas à la question (Mo)" est une déclaration parfaitement valable, mais cette réponse n'a fait que renforcer l'utilité de cette page SO, car cette réponse se trouve dans le même contexte. Je ne suis venu que sur cette page à la recherche d'une solution à l'exigence générique "Afficher les dates sous une forme lisible par l'homme" et il hest beaucoup plus facile d'écrire que--block-size=M
Ejaz
6
"lisible par l'homme" est un peu ironique. Qui utilise ls -ldu tout sinon les humains? : p
phil294
2
@chengyang: l'analyse de la ls -lsortie est la mauvaise façon de faire les choses, 99% du temps. unix.stackexchange.com/questions/128985/why-not-parse-ls . Ce 1% est généreux et se limite plutôt à des lignes uniques écrites de manière interactive pour une utilisation unique, et non à un script que vous allez utiliser de manière répétée sur des noms de fichiers inconnus.
Peter Cordes
46

ls -lhS trier par taille, dans un format lisible par l'homme

Jaciefan
la source
2
S'il vous plaît voir les commentaires sur la ls -lhréponse pour les raisons pour lesquelles cela ne répond pas vraiment à la question.
Alexander Batischev
2
Non seulement cela ne répond pas vraiment à la question (comme indiqué dans les commentaires de la réponse de Sirex), mais cela n'ajoute rien de plus à la réponse existante: le PO ne demande pas l'ordre de tri.
un CVn
6
Je pensais juste que le tri par taille était un suivi potentiel que les gens pourraient avoir, du moins c'est ce que j'ai eu
jaciefan
1
Dans ce cas, les utilisateurs devraient consulter Comment lister tous les fichiers classés par taille, ce qui correspond exactement à ce scénario.
un CVn
Je pense que cela constitue un ajout
précieux
9

Et c’est l’option permettant de répertorier tous les éléments d’un répertoire par ordre de taille du fichier (toujours lisible par l’être humain) par ordre croissant.

ls -lSrh
Marcos Placona
la source
Pensez-vous que les commentaires de l’autre réponse qui ne répondent pas à la question s’appliquent également à celle-ci?
Dan Dascalescu
@DanDascalescu Non. Ces commentaires ne sont pas utiles, les 2 réponses en question sont. Juste mes 2 cents comme un bidouillage essayant de comprendre comment lister les tailles de fichiers dans un système Linux dont il ne sait rien.
Dowlers