Polecenie ls: jak wyświetlić rozmiar pliku w megabajtach?


161

W Unixie (Tru64), jak sprawić, by lspolecenie wyświetlało rozmiar pliku w megabajtach? Obecnie jestem w stanie wyświetlić go w bajtach, używając:

ls -la

Odpowiedzi:


247

Może ci -hwystarczy:

-h
W przypadku użycia z opcją -l użyj sufiksów jednostek: Bajt, Kilobajt, Megabajt, Gigabajt, Terabajt i Petabajt, aby zmniejszyć liczbę cyfr do trzech lub mniej, używając podstawy 2 dla rozmiarów.

ls -lah

Porada ogólna: man commandnamesłuży do czytania instrukcji / pomocy dla określonego polecenia, np man ls. Tutaj .


1
Dzięki, ale opcja -h nie istnieje na Tru64 Unix.

8
Porady ogólne: zainstaluj narzędzia GNU ...
reinierpost

22
Podoba mi się twoja wskazówka na temat korzystania z człowieka, ale tak naprawdę wyszukiwanie w Google jest o wiele szybsze niż używanie człowieka przez większość czasu (jak teraz, gdy znalazłem ten wynik w Google).
trusktr

4
Google w porządku i wszystko za ogólne wskazówki, ale ostatecznie strony podręcznika są systemowe / OS, nawet specyficzne dla hosta, zwykle tworzone podczas kompilacji lub instalacji oprogramowania, a zatem autorytatywne dla oprogramowania w danym systemie.
Nevin Williams

1
Po prostu zataczam
MariusMatutiae

32

ls --block-size=Mdrukuje rozmiary w megabajtach, ale pokazuje 1 MB również dla wszystkiego poniżej 1 MB. Nie jestem jednak pewien, czy ta opcja jest dopuszczalna w twojej wersji ls dla UNIX-a.

Właściwie ls -lhdrukuje również rozmiary w gigabajtach, jeśli plik jest wystarczająco duży (Cóż w każdym razie: w systemie Linux 64bit to działa:>)

W węźle bocznym: du -sh *drukuje również rozmiary katalogów w bieżącym katalogu.


Dzięki! Musiałem monitorować zmiany plików na żywo w folderze, a używanie ls -hnie ma znaczenia, gdy plik wzrośnie powyżej 1 GB, więc używam tego polecenia w pętli 1-sekundowej:while true ; do ls -al --block-size=M ; sleep 1 ; done
ccpizza

15

Będziesz musiał użyć awkmatematyki:

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

Nie wpłynie to na dane wyjściowe dla plików mniejszych niż mega.

Konieczne może być dostosowanie numeru pola w celu dopasowania do układu ls. Możesz zmienić megana „1000000”, jeśli takie są twoje preferencje.

Spowoduje to wydrukowanie większej liczby miejsc po przecinku, niż prawdopodobnie chcesz. Możesz zaimplementować funkcję zaokrąglania.


3
O wiele mniej elegancki niż ls -lhlub ls --block-size=M, ale AWK jest bardzo przydatny!
Statwonk

Dokładnie to, czego potrzebowałem. Wszystkie pozostałe rozwiązania zaokrąglają do najbliższego MB, ale pokazuje kilka miejsc po przecinku i można go łatwo dostosować.
zeroimpl

3
To dobre rozwiązanie dla tych systemów (AIX - patrzę na ciebie), które nie mają opcji -h.
Buggabill,

14

wypróbuj ls -shRrekurencyjny format czytelny dla człowieka.


4
OP stwierdził, że nie ma -hTru64 , i zrobił to przez dwa lata przed opublikowaniem tej odpowiedzi.
CVn

3
Myśl To moja odpowiedzialność, aby pomóc tym, którzy docierają tutaj za pomocą tej samej wyszukiwarki Google.
Sorter

8

spróbuj ls -lash, drukuje rozmiary w formacie czytelnym dla człowieka


5

du -sm filename.txt


1
zawsze zaokrągla rozmiar ... jeśli rozmiar jest mniejszy niż 1 MB, powiedzmy 500K, to również wydrukuje 1M
AnonGeek

5

Możesz także wpisać

du -sh ./*

Spowoduje to wyświetlenie wszystkich folderów w bieżącym katalogu, w formacie czytelnym dla człowieka, w tym bardziej znane rozmiary plików w Kb, Mb, Gb.


2

Jeśli chcesz tylko rozmiar określonego pliku, to polecenie, trywialna ekstrapolacja poprzednich odpowiedzi, to:

ls -sh nazwa_pliku

-sjest dla wielkości i hjest czytelny dla człowieka (jak wspomniano powyżej kilka razy).

Dane wyjściowe będą wyglądać następująco:

753M myfilename

Jeśli pominiesz nazwę pliku (ów), wyświetli on katalog, umieszczając rozmiar każdego pliku obok jego nazwy - podobnie jak ls -laprzy wywołaniu bez argumentów nazwy pliku.

Mam nadzieję że to pomoże.


2
To pytanie dotyczy Tru64 Unix, a OP stwierdził prawie pięć lat temu, że -hopcja nie istnieje w lstym systemie.
G-Man

2
ls -l --block-size=MB 

Dla --block-sizeparametru:

  • użyj MBza 10 ^ 6
  • użyj tylko Mdla 2 ^ 20

Pamiętaj, że nie wyświetli to miejsc po przecinku . Ponadto wszystko powyżej 0 kB, ale nie więcej niż 1 MB, będzie oznaczone jako1MB . Z tego powodu okazałem ls -l --block-size=kBsię bardziej przydatny.
DaAwesomeP

0

Jeśli interesuje Cię tylko rozmiar pliku i nie musisz używać lspolecenia, spróbuj wykonać następujące czynności:

# 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

Spowoduje to wydrukowanie rozmiaru pliku bez potrzeby parsowania czegokolwiek.


OP chce rozmiar w MB, może opcja statyczna da rozmiar w postaci czytelnej dla człowieka?
Archemar,

Ach, to było ze mnie głupie. Dzięki za złapanie tego. stat nie ma możliwości manipulowania rozmiarem za pomocą --printf ani żadnej innej opcji, o ile wiem. Prawdopodobnie wymagałoby to użycia kombinacji narzędzi wiersza polecenia printf i bc. W takim razie po co zawracać sobie głowę. ls i cut / awk byłyby szybsze.
SKN
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.