Linux
如何在 Linux 中獲取文件的物理大小?
我可以
ls -l
用來獲取文件的邏輯大小,但是有沒有辦法獲取文件的物理大小?
ls -l
將為您提供文件的表觀大小,即程序從頭到尾讀取文件時將讀取的字節數。du
會給你“磁碟上”文件的大小。預設情況下,
du
以磁碟塊的數量為您提供文件的大小,但您可以使用它-h
來獲取人類可讀的單元。另請參閱du
您系統上的手冊。請注意,對於 GNU coreutil
du
(這可能是您在 Linux 上所擁有的),使用-b
to get bytes 意味著該--apparent-size
選項。這不是您想要用來獲取磁碟上實際使用的字節數的內容。相反,使用--block-size=1
or-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。它是一個稀疏文件(大多數零實際上並未寫入磁碟,而是表示為文件中的邏輯“漏洞”)。稀疏文件在處理預先分配的大文件時很常見,例如虛擬機的磁碟映像或交換文件等。創建稀疏文件很快,而用零填充它很慢(而且沒有必要)。
另請參閱
fallocate
Linux 系統的手冊。