Debian

使用符號連結查找文件夾的磁碟使用情況

  • October 3, 2020

我在 Debian 伺服器上工作,我只有控制台訪問權限,沒有 sudo。稱為應用程序的主文件夾包括我擁有的所有項目的子文件夾。

但是,當我通過管理面板創建新項目時,文件夾名稱是一個無意義的字元串,您可以通過創建指向新文件夾的符號連結來重命名它。

因此,例如,應用程序文件夾是這樣的:

applications/
   abuwryjbrb
   evharjqgxj
   MyCustomProjectName1
   MyCustomProjectName2

我想檢查每個應用程序使用了多少空間。由於我在 Unix 方面沒有太多經驗,所以我搜尋了一下,發現我可以使用du -sh *.

但是,輸出是這樣的:

91M     abuwryjbrb
201M    evharjqgxj
0       MyCustomProjectName1
0       MyCustomProjectName2

結果,我一個個檢查名稱並查看哪個文件夾對我來說太耗時了。

有沒有辦法獲得符號連結的磁碟使用情況的輸出?

相反du -sh -L *,我沒有得到原始和符號連結的重複文件夾,但我得到了這樣的混合輸出:

91M     abuwryjbrb
201M    MyCustomProjectName1

其中一些文件夾具有原始名稱和一些符號連結名稱

您可以使用-L標誌和du命令來使用符號連結。 du -sh -L *應該可以幫助你。

du -sh -l -- */

尾部斜杠使萬用字元匹配目錄和目錄的符號連結。對於目錄的符號連結,該命令作用於目標。

-l(類似 GNU 擴展-h)禁用du的行為,即給定文件/目錄的磁碟使用僅計算一次。請注意,如果每個項目中有硬連結,它也會影響報告的磁碟使用情況。

您的項目將被列出兩次,一次用於每個目錄,一次用於其符號連結。如果有一種簡單的方法可以製作只匹配您自己的姓名的萬用字元模式,您可以避免這種情況。例如,如果您總是將自己的名字大寫,而自動的名字總是小寫,您可以使用

du -sh [[:upper:]]*/

或者,您可以使用

du -shHl -- *

這也列出了正常文件。該選項(在 GNU 中也-H稱為標準選項)告訴取消引用命令行上傳遞的符號連結。不會遍歷每個目錄樹內的符號連結(與 不同,這在這裡不是一個好主意)。-D``du``-H``du``-L

在 zsh 中,您可以使用

du -shH -- *(@-/)

只作用於目錄的符號連結,或du -shH -- *(@)只作用於符號連結,無論其目標是什麼。這一次,我們可以省略-l,除非同一目錄有多個符號連結。

在任何 shell(以及 GNU find)中,您都可以使用

find . -maxdepth 1 -type l -xtype d -exec du -shH {} +

僅作用於目錄的符號連結。

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