有沒有辦法讓 Thunar 顯示「遞歸」檔案大小?

有沒有辦法讓 Thunar 顯示「遞歸」檔案大小?

我正在使用 Thunar 1.6.3,目前當我查看一堆資料夾時,它看起來像這樣:

Folder 1        8,2 kB
Folder 2        4,1 kB
Folder 3        4,1 kB
Folder 4        0   kB

我不確定這些“大小”數字來自哪裡,但我確信它們並不能反映資料夾中所有內容的實際大小,因為當我右鍵單擊並選擇“屬性”時,資料夾(所有這些都只有千字節)大小)加起來超過 100 Gb。

問題

  • 為什麼 Thunar 就像 12.04 和 14.04 上的命令列一樣,顯示資料夾大小如 4K?這個數字是什麼意思?
  • 有沒有辦法在終端機、Thunar 或任何其他檔案管理器中顯示複合大小,即計算出的資料夾和所有內容的遞歸大小? (注意:我不是在尋找 shell 腳本解決方案)。

答案1

我應該解釋一下 Linux 檔案系統結構來解釋這一點。大多數 Linux 檔案系統都會執行類似的操作,但我假設 ext4,這是目前的預設值。

檔案系統結構

  • inode 是檔案系統理解為邏輯單元的基本區塊。
  • 目錄 inode 包含對其他 inode 的引用。
  • 文件索引節點包含元資料、實際資料和對連續區塊的引用,以防檔案必須以非連續方式儲存。

連結

  • Ext4 支援兩種連結。硬和軟。
  • 硬連結是直接對 inode 的引用。每個文件至少有一個來自其所屬目錄的硬連結。
  • 由於目錄只是一個索引節點,具有有關索引節點引用組的信息,因此它可以引用自身或父目錄。換句話說,一個資料夾可以是同一資料夾的子資料夾和父資料夾。

好吧,這可能會讓人感到困惑。讓我解釋。假設您有三個資料夾,A、B、C,如下所示。

C is in B.  
B is in A.

現在,有趣的是,C 可以指向與 A 相同的 inode,從而創建有時稱為循環引用循環的內容。如果您嘗試遞歸,您將遇到永無止境的循環。

  • 軟連結是記錄其目標位置的目錄路徑的普通檔案。它們只是在文件系統上標記,而不是一行文本,它們應該被解釋為到其他位置的連結。例如,當您使用「建立連結」/「連結到此處」選項時,Nautilus 會建立軟連結。

所以呢?

因此,嘗試遞歸計算大小有其怪癖。預設嘗試遞歸計算大小是一個壞主意。然而,我所知道的所有像樣的文件管理器的屬性對話框都顯示遞歸計算的總大小,因為這是普通用戶所期望的。

Windows沒有問題嗎?

實際上,Windows 使用一種稱為 NTFS 的不同檔案系統格式,它維護所有檔案及其大小的清單。所以它總是可以很容易地知道總大小。

那我們為什麼不使用NTFS呢?

它不支援 Unix 權限概念(rwx分別針對所有者、群組和宇宙),而這個單一原因使其不適合用作 Linux 檔案系統。 Ext4 帶來了許多好處,但這種小小的不便對許多人來說並不重要。

好吧。給我我需要的尺寸。

你試過了du嗎 ?

怎麼du運作?

du代表磁碟使用情況。它實際上計算索引節點區塊,注意不要重複計算它們。將尺寸相加,就得到了總尺寸。

長話短說

用於du -hs <foldername>尋找磁碟上資料夾的實際大小。閱讀man du以了解更多。

答案2

圖納爾頂部選單轉到編輯>配置自訂操作,新增一個新的自訂操作:

  1. 基本的選項卡:任何名稱 [例如。資料夾 - 檔案大小],命令du -h -c %N | grep total | zenity --text-infodu -chs %N | zenity --text-info用於選定的資料夾或/和檔案大小,後面跟著總大小。
  2. 外觀條件選項卡:選取所有方塊。

我在以下位置找到了這個解決方案http://crunchbang.org

答案3

關於 Thunar 這個主題的一些瑣事是,Thunar 報告的大小與帶有或不帶有 --apparent size 選項的 du 不同。我認為所提供的答案暗示了為什麼會發生這種情況(也許 Thunar 實際上對這些相同的事物的計數略有不同,無論是什麼)。範例:同一個資料夾:(x 是我沒有寫下的餘數) du 不含--apparent-size: 19.x GB du 帶有--apparent-size:12.x GB Thunar 5.5x GB Thunar 值(括號內): 5.9x GB 我最終可能會採用 du 的輸出(與它一樣古老),但這仍然很有趣。

相關內容