我試圖用oneliner計數的所有文件,並從./
開始子目錄的大小:Bash - 從ls -la輸出中過濾掉目錄,但保留目錄「。」。
ls -laR | grep -v "\.\." | awk '{total += $5} END {print total}'
但這種計算子目錄大小的兩倍,因爲ls -laR | grep -v "\.\."
輸出是:
.:
total 32
drwxr-xr-x 3 root root 4096 Nov 29 22:59 .
-rw-r--r-- 1 root root 55 Nov 29 02:19 131
-rw-r--r-- 1 root root 50 Nov 29 01:28 abc
-rw-r--r-- 1 root root 1000 Nov 29 01:27 access.log
drwxr-xr-x 2 root root 4096 Nov 29 22:24 asd
-rwx------ 1 root root 458 Nov 29 02:54 oneliners.sh
-rwx------ 1 root root 2136 Nov 29 17:56 regexp.sh.skript
./asd:
total 32
drwxr-xr-x 2 root root 4096 Nov 29 22:24 .
-rw-r--r-- 1 root root 21298 Nov 29 22:26 asd
所以它計算目錄asd兩次。
drwxr-xr-x 2 root root 4096 Nov 29 22:24 asd
和第二次在目錄./asd:
的房源爲:作爲目錄.:
的上市一度
drwxr-xr-x 2 root root 4096 Nov 29 22:24 .
我想到,會出現這種情況對每個子目錄。有沒有辦法從ls
輸出中刪除它們一次? Usint grep -v '^d'
刪除所有目錄,所以它們不會被統計。我知道我可以簡單地使用du -sb
來做到這一點,但我需要用花式線條來完成。
呵呵? 'du'有什麼問題? –
不要分析ls。的輸出。 – 4ae1e1
_但是我需要用花哨的oneliner_完成它。不是'du -sh' oneliner? – alvits