Bash

在目錄列表中顯示文件大小的總和

  • November 4, 2021

Windowsdir目錄列表命令的末尾有一行顯示列出的文件佔用的空間總量。例如,dir *.exe顯示.exe目前目錄中的所有文件、它們的大小以及它們的大小總和。我希望dir在 bash 中使用我的別名具有類似的功能,但我不確定如何去做。

目前,我alias dir='ls -FaGl'在我的.bash_profile, 顯示

drwxr-x---+  24 mattdmo  4096 Mar 14 16:35 ./
drwxr-x--x. 256 root    12288 Apr  8 21:29 ../
-rw-------    1 mattdmo 13795 Apr  4 17:52 .bash_history
-rw-r--r--    1 mattdmo    18 May 10  2012 .bash_logout
-rw-r--r--    1 mattdmo   395 Dec  9 17:33 .bash_profile
-rw-r--r--    1 mattdmo   176 May 10  2012 .bash_profile~
-rw-r--r--    1 mattdmo   411 Dec  9 17:33 .bashrc
-rw-r--r--    1 mattdmo   124 May 10  2012 .bashrc~
drwx------    2 mattdmo  4096 Mar 24 20:03 bin/
drwxrwxr-x    2 mattdmo  4096 Mar 11 16:29 download/

例如。從這個問題中得到答案:

dir | awk '{ total += $4 }; END { print total }'

這給了我總數,但不列印目錄列表本身。有沒有辦法將其更改為單行腳本或 shell 腳本,以便我可以傳遞ls我想要的任何參數dir並獲得完整列表和總和?例如,我想執行dir -R *.jpg *.tif以獲取所有子目錄中這些文件類型的列表和總大小。理想情況下,如果我能獲得每個子目錄的大小,那就太好了,但這不是必需的。

為此已經有一個 UNIX 命令:du

做就是了:

du -bch 

按照慣例,您可以在命令末尾添加一個或多個文件或目錄路徑。-h是將大小轉換為人類友好格式的擴展,-b為您提供文件大小而不是磁碟使用情況,並-c在最後給出總數。

您可以使用du -h -c directory|tail -1

這將生成一行記憶體使用情況。

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