題 ls-command:如何以兆字節顯示文件大小?


在Unix(Tru64)中,我該如何製作 ls 命令以兆字節為單位顯示文件大小?目前我能夠使用以下內容以字節顯示它:

ls -la

151
2017-09-20 11:20


起源




答案:


也許 -h 對你來說足夠了:

-H
  與-l選項一起使用時,請使用單位後綴:Byte,Kilobyte,               Megabyte,Gigabyte,Terabyte和Petabyte為了減少               使用base 2作為大小的位數為3或更少。

ls -lah

一般建議:使用 man commandname 閱讀某個命令的手冊/幫助,例如這裡 man ls


229
2017-09-20 11:22



謝謝,但是-h選項在Tru64 Unix上似乎不存在。
一般建議:安裝GNU實用程序...... - reinierpost
我喜歡你關於使用man的提示,但實際上,在Google上搜索比在很多時候使用man要快得多(就像現在,當我在Google上找到這個結果時)。 - trusktr
谷歌的優點和一般提示,但最終手冊頁是系統/操作系統,甚至是特定於主機的,通常在編譯或安裝軟件時創建,因此對您特定係統上的軟件具有權威性。 - Nevin Williams
為了完整的循環,有人在線gnu / linux: linux.die.net/man - MariusMatutiae


ls --block-size=M 打印尺寸以兆字節為單位,但對於低於1 MB的任何內容也顯示1MB。不過,我不確定你的UNIX版本的ls是否可以接受這個選項。

其實 ls -lh 如果文件足夠大,也可以打印以千兆字節為單位的大小(無論如何:打開 Linux的 64位這確實有效:>)

在側節點上: du -sh * 打印當前目錄中的目錄大小。


32
2017-09-20 12:33



謝謝!我需要監視文件夾中的實時文件更改並使用 ls -h 文件增長超過1GB後沒有意義,所以我在1秒循環中使用此命令: while true ; do ls -al --block-size=M ; sleep 1 ; done - ccpizza


你將不得不使用 awk 為你做數學:

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

這不會影響小於的文件的輸出 mega

您可能需要調整字段編號以匹配您的字段編號 ls 佈局。你可以改變 mega 如果這是您的偏好,則為“1000000”。

這將打印比您可能想要的更多小數位。您可以實現舍入功能。


15
2017-09-20 13:36



遠不如優雅 ls -lh 要么 ls --block-size=M,但AWK非常有用! - Statwonk
正是我需要的。所有其他解決方案都會舍入到最接近的MB,但這會顯示幾個小數位,並且可以輕鬆自定義。 - zeroimpl
對於那些沒有-h選項的系統(AIX - 我看著你),這是一個很好的解決方案。 - Buggabill


嘗試 ls -shR 用於遞歸的人類可讀格式。


14
2017-10-14 08:27



OP已表示沒有 -h 在Tru64上並且在這個答案發布之前的兩年內這樣做了。 - α CVn
我認為我有責任通過相同的谷歌搜索幫助那些到達這裡的人。 - Sorter


嘗試 ls -lash,它以人類可讀的格式打印尺寸


6
2017-09-20 11:23





du -sm filename.txt


5
2017-09-20 16:36



它總是向上舍入...如果大小小於1 MB表示500K,那麼它也將打印1M - AnonGeek


你也可以輸入

du -sh ./*

這將列出當前目錄下的所有文件夾,具有人類可讀的格式,包括Kb,Mb,Gb中更熟悉的文件大小。


5
2018-04-19 22:57





如果你只想要一個特定文件的大小,那麼命令是對前面答案的一個簡單的推斷:

ls -sh 文件名(S)

-s 是為了大小和 h 是為了人類可讀(如上所述)。

輸出將如下所示:

753M myfilename

如果省略文件名,它將列出目錄,將每個文件的大小放在其名稱旁邊 - 與 ls -la 在沒有文件名參數的情況下調用。

希望這可以幫助。


2
2018-06-13 07:36



這個問題是關於Tru64 Unix的,並且OP在差不多五年前提到了 -h 選項不存在於 ls 在那個系統上。 - G-Man


ls -l --block-size=MB 

為了 --block-size 參數:

  • 使用 MB 為10 ^ 6
  • 只使用 M 為2 ^ 20

0
2017-07-24 18:25



請注意這一點 不會顯示任何小數位。也, 大於0 kB但不大於1 MB的任何內容都將顯示為 1MB。因此我找到了 ls -l --block-size=kB 更有用。 - DaAwesomeP


如果您只對文件大小感興趣,則不必使用 ls 命令,嘗試以下方法:

# 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

這將打印文件大小而無需解析任何內容。


0
2018-03-10 17:34



OP想要以MB為單位的大小,也許stat選項會以人類可讀的形式產生大小? - Archemar
啊,這對我來說是愚蠢的。謝謝你抓住了。據我所知,stat沒有使用--printf或任何其他選項操作大小的選項。它可能需要使用printf和bc命令行實用程序的組合。在哪種情況下,為什麼這麼麻煩。 ls和cut / awk會更快。 - SKN