如何在linux中獲得檔案或目錄的大小

當您使用linuxdu命令時,您將獲得實際磁碟使用情況以及檔案或目錄的真實大小。我們將解釋為什麼這些值不一樣。...

當您使用linuxdu命令時,您將獲得實際磁碟使用情況以及檔案或目錄的真實大小。我們將解釋為什麼這些值不一樣。

實際磁碟使用情況和實際大小

檔案的大小和它在硬碟上佔用的空間很少相同。磁碟空間按塊分配。如果一個檔案比一個塊小,整個塊仍然分配給它,因為檔案系統沒有更小的不動產單元可供使用。

除非檔案的大小是塊的精確倍數,否則它在硬碟上使用的空間必須始終向上舍入到下一個整塊。例如,如果一個檔案大於兩個塊但小於三個塊,則仍需要三個塊的空間來儲存它。

與檔案大小相關的兩個測量值。第一個是檔案的實際大小,即組成檔案的內容位元組數。第二個是硬碟上檔案的有效大小。這是儲存該檔案所需的檔案系統塊數。

一個例子

讓我們看一個簡單的例子。我們將一個字元重定向到一個檔案中,以建立一個小檔案:

echo "1" > geek.txt

如何在linux中獲得檔案或目錄的大小

現在,我們將使用長格式列表ls來檢視檔案長度:

ls -l geek.txt

如何在linux中獲得檔案或目錄的大小

長度是dave條目後面的數字值,即兩個位元組。為什麼我們只向檔案傳送了一個字元卻只有兩個位元組?讓我們看看檔案裡發生了什麼。

我們將使用hextump命令,它將給我們一個精確的位元組計數,並允許我們“看到”非列印字元作為十六進位制值。我們還將使用-C(canonical)選項強制輸出在輸出主體中顯示十六進位制值,以及它們的字母數字字元等價物:

hexdump -C geek.txt

如何在linux中獲得檔案或目錄的大小

輸出告訴我們,從檔案中的偏移量00000000開始,有一個位元組包含一個十六進位制值31,還有一個位元組包含一個十六進位制值0A。輸出的右側部分儘可能將這些值描述為字母數字字元。

十六進位制值31用來表示數字1。0A的十六進位制值用於表示換行符,它不能顯示為字母數字字元,因此它顯示為句點(.)。換行字元由echo新增。預設情況下,echo在顯示需要寫入終端視窗的文字後,會啟動一個新行。

這與ls的輸出一致,並且與兩個位元組的檔案長度一致。

相關:如何使用ls命令列出Linux上的檔案和目錄

現在,我們將使用du命令檢視檔案大小:

du geek.txt

如何在linux中獲得檔案或目錄的大小

上面說是四號,但是四號是什麼?

有積木,也有積木

當du以塊的形式報告檔案大小時,它使用的大小取決於幾個因素。可以在命令列上指定應使用的塊大小。如果不強制du使用特定的塊大小,它將遵循一組規則來決定使用哪個塊大小。

首先,它檢查以下環境變數:

  • 塊大小
  • 塊大小
  • 塊大小

如果其中任何一個存在,則設定塊大小,並且du停止檢查。如果未設定,則du預設為1024位元組的塊大小。除非設定了名為POSIXLY\u CORRECT的環境變數。如果是這樣,du預設為512位元組的塊大小。

那麼,我們如何找出哪個在用呢?您可以檢查每個環境變數來計算它,但是有一種更快的方法。讓我們將結果與檔案系統使用的塊大小進行比較。

為了發現檔案系統使用的塊大小,我們將使用tune2fs程式。然後我們將使用-l(list superblock)選項,透過grep管道輸出,然後列印包含單詞“Block”的行

在本例中,我們將檢視第一個硬碟驅動器sda1的第一個分割槽上的檔案系統,我們需要使用sudo:

sudo tune2fs -l /dev/sda1 | grep Block

如何在linux中獲得檔案或目錄的大小

檔案系統塊大小為4096位元組。如果我們將其除以du(4)得到的結果,就會顯示du的預設塊大小是1024位元組。我們現在知道了一些重要的事情。

首先,我們知道用於儲存檔案的最小檔案系統空間是4096位元組。這意味著即使是我們微小的兩位元組檔案也佔用了4KB的硬碟空間。

要記住的第二件事是專門用於報告硬碟和檔案系統統計資訊的應用程式,例如du、ls和tune2fs,對於“塊”的含義可能有不同的概念。tune2fs應用程式報告真實的檔案系統塊大小,而ls和du可以配置或強制使用其他塊大小。這些塊大小並不打算與檔案系統塊大小相關;它們只是那些命令在輸出中使用的“塊”。

最後,除了使用不同的塊大小,du和tune2fs的答案傳達了相同的含義。tune2fs結果是一個4096位元組的塊,du結果是四個1024位元組的塊。

使用du

如果沒有命令列引數或選項,du會列出當前目錄和所有子目錄正在使用的總磁碟空間。

我們來看一個例子:

du

如何在linux中獲得檔案或目錄的大小

該大小以預設塊大小(每個塊1024位元組)報告。遍歷整個子目錄樹。

在其他目錄上使用du

如果希望du報告的目錄與當前目錄不同,可以在命令列上傳遞該目錄的路徑:

du ~/.cach/evolution/

如何在linux中獲得檔案或目錄的大小

對特定檔案使用du

如果您想報告某個特定檔案,請在命令列上傳遞該檔案的路徑。您還可以將shell模式傳遞給使用者,然後選擇一組檔案,例如*.txt:

du ~/.bash_aliases

如何在linux中獲得檔案或目錄的大小

報告目錄中的檔案

要讓du報告當前目錄和子目錄中的檔案,請使用-a(所有檔案)選項:

du -a

如何在linux中獲得檔案或目錄的大小

對於每個目錄,報告每個檔案的大小以及每個目錄的總數。

如何在linux中獲得檔案或目錄的大小

限制目錄樹深度

您可以告訴du列出目錄樹到一定的深度。為此,請使用-d(max depth)選項並提供深度值作為引數。請注意,所有子目錄都被掃描並用於計算報告的總數,但它們並沒有全部列出。要將最大目錄深度設定為一級,請使用以下命令:

du -d 1

如何在linux中獲得檔案或目錄的大小

輸出列出當前目錄中該子目錄的總大小,並提供每個子目錄的總大小。

要更深一層列出目錄,請使用以下命令:

du -d 2

如何在linux中獲得檔案或目錄的大小

設定塊大小

可以使用“塊”選項為當前操作的du設定塊大小。要使用一個位元組的塊大小,請使用以下命令獲取目錄和檔案的確切大小:

du --block=1

如何在linux中獲得檔案或目錄的大小

如果要使用1兆位元組的塊大小,可以使用-m(兆位元組)選項,該選項與--block=1M相同:

du -m

如何在linux中獲得檔案或目錄的大小

如果要根據目錄和檔案使用的磁碟空間以最合適的塊大小報告大小,請使用-h(人類可讀)選項:

du -h

如何在linux中獲得檔案或目錄的大小

要檢視檔案的外觀大小而不是用於儲存檔案的硬碟空間量,請使用--appearance size選項:

du --apparent-size

如何在linux中獲得檔案或目錄的大小

您可以將此選項與-a(all)選項結合使用,以檢視每個檔案的外觀大小:

du --apparent-size -a

如何在linux中獲得檔案或目錄的大小

將列出每個檔案及其外觀大小。

如何在linux中獲得檔案或目錄的大小

僅顯示總計

如果希望du只報告目錄的總數,請使用-s(summary)選項。您還可以將此選項與其他選項相結合,例如-h(人類可讀)選項:

du -h -s

如何在linux中獲得檔案或目錄的大小

在這裡,我們將它與--appearance size選項一起使用:

du --apparent-size -s

如何在linux中獲得檔案或目錄的大小

顯示修改時間

要檢視建立或上次修改的時間和日期,請使用--time選項:

du --time -d 2

如何在linux中獲得檔案或目錄的大小

奇怪的結果?

如果您看到du的奇怪結果,特別是當您將大小交叉引用到其他命令的輸出時,通常是由於可以設定不同命令或預設命令的塊大小不同。這也可能是由於實際檔案大小和儲存它們所需的磁碟空間之間的差異。

如果需要匹配其他命令的輸出,請在du中嘗試--block選項。

  • 發表於 2021-04-02 20:13
  • 閱讀 ( 47 )
  • 分類:網際網路

你可能感興趣的文章

在linux中檢視磁碟使用情況的7大應用程式

... 要了解更多的Linux基礎知識,請檢視我們關於如何在Linux中重新命名檔案的概述。 ...

  • 發佈於 2021-03-13 08:13
  • 閲讀 ( 39 )

如何在linux和macos上將手冊頁縮短為可讀的解釋

... 使用tldr快速瞭解如何使用命令 ...

  • 發佈於 2021-03-14 01:21
  • 閲讀 ( 51 )

最佳化linux系統備份的6個應用程式和技巧

...中的資料。這包括您的個人配置,通常儲存在以點開頭的檔案或目錄(例如/home/[username]/.local)以及音樂、圖片和其他檔案和資料夾(如預設文件或下載資料夾)中。這是您可能會重點備份的資料,也是最常開箱即用的資料。 ...

  • 發佈於 2021-03-15 01:53
  • 閲讀 ( 41 )

40多個最常用的linux終端命令

... 在您真正充分利用終端之前,您需要知道如何導航它。這就是為什麼我們認為這些是最基本的Linux命令:如果你不能更改目錄或者在一個你不記得如何使用的命令上獲得幫助,那麼再多的終端知識也幫不了你。 ...

  • 發佈於 2021-03-15 21:40
  • 閲讀 ( 46 )

linux命令參考備忘單

...便的Linux命令備忘單。如果您想執行其中的幾個,請檢視如何在帶螢幕的Linux終端上執行多工。 ...

  • 發佈於 2021-03-22 04:06
  • 閲讀 ( 55 )

如何在linux中輕鬆地加密和解密檔案和目錄

你有沒有想過在Linux中快速、輕鬆地加密檔案,而不必安裝和學習新的軟體包?這裡有一個很好的和簡單的方法,可以透過AES256加密檔案或目錄,並用密碼保護,幫助您的檔案遠離窺探的眼睛。 ...

  • 發佈於 2021-03-26 14:56
  • 閲讀 ( 42 )

啟動linux的9個基本命令

... 如何在linux下開啟終端 ...

  • 發佈於 2021-03-26 18:33
  • 閲讀 ( 54 )

使用這些linux命令高效地管理遠端ssh連線

... 但不一定要這樣。是時候學習如何只使用別名透過SSH高效登入、傳輸單個檔案或目錄、執行遠端SSH命令以及輕鬆地將遠端伺服器裝載到本地目錄了。 ...

  • 發佈於 2021-03-28 06:44
  • 閲讀 ( 42 )

如何在linux上查詢和刪除斷開的符號連結

...棒的特性,但是它們可能會斷開並指向任何東西。下面是如何找到斷開的符號連結,檢查它們,並在需要時從系統中刪除它們。 符號連結101 符號連結,也稱為“軟連結”和“符號連結”,是一種可以指向檔案和目錄的快捷方...

  • 發佈於 2021-04-01 09:09
  • 閲讀 ( 48 )

如何使用shopt定製bashshell

...shshell的行為,您可以控制超過50個設定。我們將向您展示如何按照您喜歡的方式定製您的Linux系統。 shopt內建 shopt內建是bashshell所有版本的一部分,因此不需要安裝任何東西。多年來,shopt提供的選項數量穩步增加。所以,Bash...

  • 發佈於 2021-04-01 12:30
  • 閲讀 ( 54 )
達令楊
達令楊

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦