ls-Befehl: Wie wird die Dateigröße in Megabyte angezeigt?


161

Wie kann ich unter Unix (Tru64) festlegen, dass der lsBefehl die Dateigröße in Megabyte anzeigt? Derzeit kann ich es in Bytes anzeigen, indem ich Folgendes verwende:

ls -la

Antworten:


247

Vielleicht -hreicht es Ihnen:

-h
Verwenden Sie bei Verwendung der Option -l die Einheitensuffixe: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte und Petabyte, um die Anzahl der Ziffern auf drei oder weniger zu reduzieren, wobei Basis 2 für die Größen verwendet wird.

ls -lah

Allgemeiner Hinweis: Hier können Sie man commandnamedas Handbuch / die Hilfe zu einem bestimmten Befehl lesen, z man ls. B. hier .


1
Danke, aber die Option -h scheint unter Tru64 Unix nicht zu existieren.

8
Allgemeiner Hinweis: GNU-Dienstprogramme installieren ...
reinierpost

22
Ich mag Ihren Tipp zum Umgang mit Menschen, aber die Suche bei Google ist sehr viel schneller als der Umgang mit Menschen (wie jetzt, als ich dieses Ergebnis bei Google fand).
Trusktr

4
Googles feines und alles für allgemeine Hinweise, aber letztendlich sind Manpages System / OS, sogar hostspezifisch, normalerweise erstellt, wenn die Software kompiliert oder installiert wird, und somit maßgeblich für die Software auf Ihrem speziellen System.
Nevin Williams


32

ls --block-size=Mdruckt die Größen in Megabyte, zeigt aber auch 1 MB für alles unter 1 MB. Ich bin mir nicht sicher, ob diese Option in Ihrer UNIX-Version von ls akzeptabel ist.

Eigentlich ls -lhdruckt auch Größen in Gigabytes , wenn die Datei groß genug ist (Na ja sowieso: auf Linux 64bit dies funktioniert:>)

Auf einem Nebenknoten: du -sh *Druckt auch Verzeichnisgrößen im aktuellen Verzeichnis.


Vielen Dank! Ich musste Änderungen an Live-Dateien in einem Ordner überwachen und die Verwendung ls -hist bedeutungslos, nachdem eine Datei while true ; do ls -al --block-size=M ; sleep 1 ; done
größer

15

Sie müssen verwenden awk, um die Mathematik für Sie zu erledigen:

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

Dies wirkt sich nicht auf die Ausgabe von Dateien aus, die kleiner als sind mega.

Möglicherweise müssen Sie die Feldnummer so anpassen, dass sie mit Ihrer lsAnordnung übereinstimmt . Sie können megazu "1000000" wechseln , wenn dies Ihre Präferenz ist.

Dadurch werden mehr Dezimalstellen ausgegeben, als Sie wahrscheinlich möchten. Sie können eine Rundungsfunktion implementieren.


3
Viel weniger elegant als ls -lhoder ls --block-size=M, aber AWK ist sehr nützlich!
Statwonk

Genau das, was ich brauchte. Alle anderen Lösungen runden auf das nächste MB auf, aber dies zeigt einige Dezimalstellen und ist leicht anpassbar.
Zeroimpl

3
Dies ist eine gute Lösung für Systeme (AIX - ich schaue Sie an), die nicht die Option -h haben.
Buggabill 18.11.15


8

Versuchen Sie ls -lash, es druckt Größen in lesbarem Format


5

du -sm filename.txt


1
es aufrunden immer die Größe ... wenn Größe von weniger als 1 MB 500K ist sagen, dann wird es auch 1M drucken
AnonGeek

5

Sie können auch eingeben

du -sh ./*

Hiermit werden alle Ordner im aktuellen Verzeichnis im für Menschen lesbaren Format aufgelistet, einschließlich der bekannteren Dateigrößen in KB, MB, GB.


2

Wenn Sie nur die Größe einer bestimmten Datei benötigen, lautet der Befehl, eine einfache Extrapolation der vorherigen Antworten, wie folgt:

ls -sh Dateiname (n)

-sist für Größe und hist für Menschen lesbar (wie oben einige Male erwähnt).

Die Ausgabe sieht folgendermaßen aus:

753M myfilename

Wenn Sie die Dateinamen weglassen, wird das Verzeichnis aufgelistet, wobei die Größe jeder Datei neben dem Namen steht - ähnlich ls -lawie beim Aufruf ohne Dateinamenargumente.

Hoffe das hilft.


2
Diese Frage -hbezieht sich auf Tru64 Unix, und das OP hat vor fast fünf Jahren festgestellt, dass die Option in lsdiesem System nicht vorhanden ist.
G-Man,

2
ls -l --block-size=MB 

Für den --block-sizeParameter:

  • benutze MBfür 10 ^ 6
  • benutze nur Mfür 2 ^ 20

Beachten Sie, dass hier keine Nachkommastellen angezeigt werden . Auch etwas über 0 kB aber noch größer als 1 MB wird gezeigt , wie1MB . Aus diesem Grund fand ich ls -l --block-size=kBnützlicher.
DaAwesomeP

0

Wenn Sie nur an der Dateigröße interessiert sind und den lsBefehl nicht verwenden müssen , versuchen Sie Folgendes:

# 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

Dadurch wird die Dateigröße gedruckt, ohne dass eine Analyse durchgeführt werden muss.


OP will Größe in MB, vielleicht wird eine stat-Option Größe in von Menschen lesbarer Form produzieren?
Archemar

Ah, das war dumm von mir. Danke, dass du das verstanden hast. stat hat meines Wissens keine Möglichkeit, die Größe mit --printf oder einer anderen Option zu manipulieren. Es würde wahrscheinlich die Verwendung einer Kombination von Befehlszeilendienstprogrammen printf und bc erfordern. In welchem ​​Fall, warum sich die Mühe machen. ls und cut / awk wären schneller.
SKN
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.