Shell
查找某組文件的大小
我試圖找出特定使用者擁有的所有文件的總大小。
在嘗試這樣做時,我在執行不同的命令時會得到不同的大小。
哪個命令可以正確找出特定使用者擁有的所有文件的總大小?
$ find . -type f -user silviya|ls -lh|head -1 total 68K $ find . -type f -user agalya|wc -c 284 $ find . -type f -user agalya|du -sk 120 .
這種變化的原因是什麼?
在:
find . -type f -user silviya|ls -lh|head -1
您正在通過管道輸出
find
tols
,但ls
不讀取其輸入。它將文件列表作為參數列出。在沒有像這裡這樣的參數的情況下,它會列出目前目錄中的非隱藏文件。因此,在這裡,您可以獲得目前目錄中所有非隱藏文件(任何類型)的磁碟使用情況(每個硬連結計算給定文件的大小)。在:
find . -type f -user agalya|wc -c
您正在計算 輸出中的字節數
find
,因此這是文件路徑(和換行符)的大小,而不是它們的磁碟使用量或文件大小。在:
find . -type f -user agalya|du -sk
Like
ls
,du
將文件列表作為參數,而不是來自其輸入。因此,在這裡,您可以獲得目前目錄中所有文件和目錄的磁碟使用情況(遞歸)。要使用
agalya
GNU 實用程序獲取 擁有的所有正常文件的磁碟使用情況,您可以:find . -type f -user agalya -print0 | du -hc --files0-from=- | tail -n 1
--files0-from
告訴du
(僅限 GNUdu
)從標準輸入中獲取文件列表(由-
此處表示)。-c
給出累積大小(請注意,同一文件的硬連結只計算一次)。要獲得文件表觀大小而不是磁碟使用情況,請添加
--apparent-size
選項到du
(同樣,GNU 特定)。添加-l
選項(也是 GNU 特定的)以多次計算硬連結。