Directory

ls -lS 沒有顯示目錄的真實大小

  • March 18, 2022

ls -lS我在我的主目錄中使用了命令。該命令應該按大小列出目錄的內容。這是我執行此命令後得到的

total 10148
-rw-rw-r--  1 rahul rahul 8053159 May 15 15:35 Costa_ODE.pdf
-rw-rw-r--  1 rahul rahul 1755507 May 15 17:33 gnuplot.pdf
-rw-rw-r--  1 rahul rahul  218048 May 13 22:14 out.log
-rw-rw-r--  1 rahul rahul   98131 Feb 16 01:53 hs_err_pid8639.log
-rw-rw-r--  1 rahul rahul   12364 Apr 19 14:01 Untitled 1.csv
drwxr-xr-x  4 rahul rahul   12288 Jun  6  2016 cfitsio
-rw-r--r--  1 rahul rahul    8980 Feb  7  2016 examples.desktop
drwxrwxr-x  2 rahul rahul    4096 Mar 10 12:24 bin
drwxrwxr-x  8 rahul rahul    4096 May  8 14:51 boxfitv2
drwxrwxrwx  2 rahul rahul    4096 Jan 30 11:50 dao2
drwxrwxr-x  2 rahul rahul    4096 Mar 12  2016 deja-dup
drwxr-xr-x  6 rahul rahul    4096 May 16 02:12 Desktop
drwxr-xr-x  3 rahul rahul    4096 May 15 10:53 Documents
drwxr-xr-x  5 rahul rahul    4096 May  8 14:09 Downloads
.
.
.
.

這是一個相當大的清單。但我希望您專注於子目錄,例如桌面。它的大小顯示為 4096 字節。但是當我嘗試查看 Desktop 的詳細資訊時,這就是我得到的。

桌面大小

簡而言之,該命令ls -lS不計算 Desktop 和其他子目錄內容的大小。有什麼辦法嗎?


編輯:

ls -lsh命令的輸出

total 10M
4.0K drwxrwxr-x  2 rahul rahul 4.0K Mar 10 12:24 bin
4.0K drwxrwxr-x  8 rahul rahul 4.0K May  8 14:51 boxfitv2
4.0K -rw-rw-r--  1 rahul rahul 3.2K May 13 13:28 c.c
12K drwxr-xr-x  4 rahul rahul  12K Jun  6  2016 cfitsio
7.7M -rw-rw-r--  1 rahul rahul 7.7M May 15 15:35 Costa_ODE.pdf
4.0K drwxrwxrwx  2 rahul rahul 4.0K Jan 30 11:50 dao2
  0 -rw-rw-r--  1 rahul rahul    0 May 13 20:37 default.txt
4.0K drwxrwxr-x  2 rahul rahul 4.0K Mar 12  2016 deja-dup
4.0K drwxr-xr-x  6 rahul rahul 4.0K May 16 17:11 Desktop
4.0K drwxr-xr-x  3 rahul rahul 4.0K May 15 10:53 Documents
4.0K drwxr-xr-x  5 rahul rahul 4.0K May  8 14:09 Downloads
12K -rw-r--r--  1 rahul rahul 8.8K Feb  7  2016 examples.desktop
.
.
.

du -sh ~/Desktop命令的輸出

80M /home/rahul/Desktop

ls -lS確實顯示了目錄的真實大小:目錄本身 + 對給定目錄中包含的任何文件的引用。

您可以使用du而不是ls

du -ha -d 1 | sort -hr

du: 遞歸估計目錄的文件空間使用情況

h: 人類可讀

a: 所有內容,不僅僅是目錄

d 1: max depth 1,所以你只檢查目前目錄中的目錄

sort -hr: 遞減排序

ls顯示正常文件的大小(或者,如果是目錄,則顯示其 inode 的大小,而不僅僅是它們的內容,因為它沒有快速確定的方法,而對於正常文件,大小是已知的,因此可以準確顯示並迅速)。

實際上,該欄位因文件所代表的內容而異:

  • 對於正常文件:它顯示它們的實際大小
  • 對於符號連結(符號連結,ln -s source dest):符號連結名稱的長度(因為這是符號連結文件的內容)。(例如:符號連結/dev/fd -> /proc/self/fd: 的目標路徑正好有 13 個字元長 ( / p r o c / s e l f / f d),因此ls -l將在第 5 列顯示“13”,而不是指向文件的大小。)
  • 對於目錄:一個 inode 的大小(如果目錄條目的內容適合一個)或多個 inode(如果需要多個 inode 來描述該目錄條目的列表)。這就是為什麼大多數人看到 4096 的原因:通常它們裡面沒有很多文件,所以它適合所有的 1 個 inode,預設情況下通常是 4096 字節。如果您曾經將許多文件放在某個目錄中,這將會上升(並且很可能會在之後保持不變,除非您重新創建目錄本身)。
  • 對於管道和其他文件類型:每次通常與大小相關聯的欄位可能是也可能不是大小(例如:對於塊設備(例如:/dev/hd* 文件)它不顯示任何大小,而是顯示他們的major, minor一對資訊。見man mknod。看看man ls他們是如何被辨識的。)

要知道目錄+子目錄的內容總和:

  • du /some/path # 將為每個目錄顯示:其內容的總和(包括子目錄),並顯示每個目錄及其下方的內容/some/path
  • du -s /some/path# 將僅顯示 1 個級別,即僅顯示 /some/path 的總數
  • du -S /some/path# 顯示每個目錄的內容,不包括它們的子目錄。有助於準確了解 /some/path 的哪個子目錄很大。

有關詳細資訊,請參閱https://linux.die.net/man/1/du 。

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