ls-command: jak wyświetlić rozmiar pliku w megabajtach?
W systemie Unix (Tru64), jak sprawić, aby polecenie ls
wyświetliło rozmiar pliku w megabajtach? Obecnie jestem w stanie wyświetlić go w bajtach za pomocą:
ls -la
W systemie Unix (Tru64), jak sprawić, aby polecenie ls
wyświetliło rozmiar pliku w megabajtach? Obecnie jestem w stanie wyświetlić go w bajtach za pomocą:
ls -la
Może -h
jest dla Ciebie wystarczający:
-h Przy zastosowaniu opcji -l należy użyć sufiksów urządzenia: 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
Ogólna rada: Użyj man commandname
, aby przeczytać instrukcję/pomoc danego polecenia, np. tutaj man ls
.
ls --block-size=M
drukuje rozmiary w megabajtach, ale pokazuje 1MB również dla czegokolwiek poniżej 1MB. Nie jestem jednak pewien czy ta opcja jest dopuszczalna w UNIX-owej wersji ls.
Właściwie ls -lh
drukuje również rozmiary w gigabajtach, jeśli plik jest wystarczająco duży (No cóż: na Linux 64bit to działa :>)
Na bocznym węźle: du -sh *
drukuje również rozmiary katalogów w bieżącym katalogu.
Będziesz musiał użyć awk
, aby zrobić matematykę dla Ciebie:
ls -l | awk 'BEGIN{mega=1048576} $5 >= mega {$5 = $5/mega "MB"} {print}'
To nie wpłynie na wyjście dla plików, które są mniejsze niż mega
.
Być może będziesz musiał dostosować numer pola, aby dopasować sposób, w jaki ls
jest ułożony. Możesz zmienić mega
na “1000000”, jeśli tak wolisz.
To spowoduje wydruk większej liczby miejsc po przecinku, niż prawdopodobnie chcesz. Możesz zaimplementować funkcję zaokrąglania.
Jeśli chcesz tylko określić rozmiar tylko konkretnego pliku, to komenda, trywialna ekstrapolacja poprzednich odpowiedzi, to:
ls -sh _filename(s)_
-s
jest dla rozmiaru, a h
jest dla Human Readable (jak wspomniano powyżej kilka razy).
Wyjście będzie wyglądało następująco:
753M myfilename
Jeśli pominiesz nazwę pliku(ów), wyświetli on katalog, umieszczając rozmiar każdego pliku obok jego nazwy - nie inaczej niż robi to ls -la
, gdy jest wywoływany bez argumentów nazwy pliku.
Mam nadzieję, że to pomoże.
Jeśli interesuje Cię tylko rozmiar pliku, a nie musisz używać komendy ls
, spróbuj następującej:
# 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
To wydrukuje rozmiar pliku bez potrzeby parsowania.