Linux

如何在 Linux 中獲取文件的物理大小?

  • March 21, 2021

我可以ls -l用來獲取文件的邏輯大小,但是有沒有辦法獲取文件的物理大小?

ls -l將為您提供文件的表觀大小,即程序從頭到尾讀取文件時將讀取的字節數。 du會給你“磁碟上”文件的大小。

預設情況下,du以磁碟塊的數量為您提供文件的大小,但您可以使用它-h來獲取人類可讀的單元。另請參閱du您系統上的手冊。

請注意,對於 GNU coreutil du(這可能是您在 Linux 上所擁有的),使用-bto get bytes 意味著該--apparent-size選項。這不是您想要用來獲取磁碟上實際使用的字節數的內容。相反,使用--block-size=1or -B 1

使用 GNU ls,您也可以ls -s --block-size=1對文件進行操作。這將給出與文件相同的編號du -B 1


例子:

$ ls -l file
-rw-r--r--  1 myself wheel  536870912 Apr  8 11:44 file

$ ls -lh file
-rw-r--r--  1 myself wheel   512M Apr  8 11:44 file

$ du -h file
24K    file

$ du -B 1 file
24576   file

$ ls -s --block-size=1 file
24576 file

這意味著這是一個 512 MB 的文件,在磁碟上佔用了大約 24 KB。它是一個稀疏文件(大多數零實際上並未寫入磁碟,而是表示為文件中的邏輯“漏洞”)。稀疏文件在處理預先分配的大文件時很常見,例如虛擬機的磁碟映像或交換文件等。創建稀疏文件很快,而用零填充它很慢(而且沒有必要)。

另請參閱fallocateLinux 系統的手冊。

引用自:https://unix.stackexchange.com/questions/436314