Bash
在目錄列表中顯示文件大小的總和
Windows
dir
目錄列表命令的末尾有一行顯示列出的文件佔用的空間總量。例如,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
這將生成一行記憶體使用情況。