在服務器中如何快速找到當前目錄下最大的10個文件

沒有那個單獨的命令可以做到這一點,但Unix/Linux 命令的特點就是多個命令可以結合使用

比如管道命令 | ,可以將一個命令的輸出作為另一個命令的輸入,這大概是最強大的命令了吧,這個一定要學會,比如我就很喜歡用 cat xxx | grep xxx ,也沒啥特別,就是找出文件中含 xxx 的部分

回到如何快速找出當前目錄下最大的幾個文件這個問題

說下思路

1. 先打印出所有的文件的路徑 find ./ -type f

在服務器中如何快速找到當前目錄下最大的10個文件

2. 打印出以上文件的大小 du -h

在服務器中如何快速找到當前目錄下最大的10個文件

3. 對以上文件從大到小排序 sort -rh

在服務器中如何快速找到當前目錄下最大的10個文件

這個 sort 命令有點意思,他並不能按文件大小排序,它能做的就是把一排排的文本按 ASCII 碼的順序打印出來,感嘆一句 Unix/Linux 命令真是巧妙

5. 只需要 10 個結果 head -n 10,這個要放最後


大家看到這裡應該發現問題了,第一步 find 明明只打印了文件,到後來怎麼出現了文件夾

在服務器中如何快速找到當前目錄下最大的10個文件

其實我也很疑惑,肯定是 find 通過這個管道傳遞給 du 的過程中出了問題


查了一下資料,find 的輸出是文件名加一個換行符du 接受這個輸入時會出現問題,我們需要用 -print0 選項把 find 輸出的換行符改成 \\0,這個大家很熟悉吧,字符串的結束標誌,再配合用 xargs 將其分割成小塊傳給 du 命令

這裡可能有點難以理解,我也是,Unix/Linux 命令博大精深

最終命令

find ./ -type f -print0 | xargs -0 du -h | sort -rh | head -n 10

在服務器中如何快速找到當前目錄下最大的10個文件

是不是覺得太長,改個名字吧,不如叫 fmax

大家千萬別再服務器上用find / ,極有可能崩潰

更多命令可以查看這篇文章:

如何在 Linux 中查找最大的 10 個文件

ok了,希望這篇文章能對大家有所幫助


分享到:


相關文章: