ls-Befehl: Wie zeige ich die Dateigröße in Megabyte an?
Wie bringe ich unter Unix (Tru64) den Befehl ls
dazu, die Dateigröße in Megabyte anzuzeigen? Derzeit kann ich sie in Bytes anzeigen, indem ich Folgendes verwende:
ls -la
Wie bringe ich unter Unix (Tru64) den Befehl ls
dazu, die Dateigröße in Megabyte anzuzeigen? Derzeit kann ich sie in Bytes anzeigen, indem ich Folgendes verwende:
ls -la
Vielleicht ist -h
für Sie ausreichend:
-h Bei Verwendung der Option -l verwenden Sie Einheitssuffixe: Byte, Kilobyte, Megabyte, Gigabyte, Terabyte und Petabyte, um die Anzahl der Ziffern auf drei oder weniger zu reduzieren, wobei für die Größen die Basis 2 zu verwenden ist.
ls -lah
Allgemeine Hinweise: Verwenden Sie man commandname
, um das Handbuch/Hilfe zu einem bestimmten Befehl zu lesen, z.B. hier man ls
.
ls --block-size=M
druckt die Größenangaben in Megabyte, zeigt aber 1MB auch für alles unter 1 MB an. Ich bin mir allerdings nicht sicher, ob diese Option in Ihrer UNIX-Version von ls akzeptabel ist.
Tatsächlich druckt ls -lh
auch Größen in Gigabytes, wenn die Datei groß genug ist (Nun ja, wie auch immer: unter Linux 64bit funktioniert das :>)
Auf einem Nebenknoten: du -sh *
druckt auch Verzeichnisgrößen im aktuellen Verzeichnis.
Sie müssen mit awk
rechnen:
ls -l | awk 'BEGIN{mega=1048576} $5 >= mega {$5 = $5/mega "MB"} {print}'
Dies hat keinen Einfluss auf die Ausgabe für Dateien, die kleiner als mega
sind.
Möglicherweise müssen Sie die Feldnummer anpassen, damit sie mit dem Layout Ihrer ls
übereinstimmt. Sie können mega
in “1000000” ändern, wenn Sie dies bevorzugen.
Dies wird mehr Dezimalstellen ausgeben, als Sie wahrscheinlich wünschen. Sie könnten eine Rundungsfunktion implementieren.
Wenn Sie nur die Größe einer bestimmten Datei wollen, dann lautet der Befehl, eine triviale Extrapolation der vorherigen Antworten:
ls -sh _filename(s)_
-s
steht für Größe und h
für Human Readable (wie bereits einige Male erwähnt).
Die Ausgabe wird so aussehen:
753M myfilename
Wenn Sie den/die Dateinamen weglassen, wird das Verzeichnis aufgelistet, wobei die Größe jeder Datei neben ihrem Namen steht - nicht unähnlich dem, was ls -la
tut, wenn es ohne Dateinamen-Argumente aufgerufen wird.
Hoffentlich hilft das.
Wenn Sie nur an der Dateigröße interessiert sind und nicht den Befehl ls
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
Dies gibt die Dateigröße aus, ohne dass Sie etwas parsen müssen.