沒有那個單獨的命令可以做到這一點,但Unix/Linux 命令的特點就是多個命令可以結合使用
比如管道命令 | ,可以將一個命令的輸出作為另一個命令的輸入,這大概是最強大的命令了吧,這個一定要學會,比如我就很喜歡用 cat xxx | grep xxx ,也沒啥特別,就是找出文件中含 xxx 的部分
回到如何快速找出當前目錄下最大的幾個文件這個問題
說下思路
1. 先打印出所有的文件的路徑 find ./ -type f
2. 打印出以上文件的大小 du -h
3. 對以上文件從大到小排序 sort -rh
這個 sort 命令有點意思,他並不能按文件大小排序,它能做的就是把一排排的文本按 ASCII 碼的順序打印出來,感嘆一句 Unix/Linux 命令真是巧妙
5. 只需要 10 個結果 head -n 10,這個要放最後
大家看到這裡應該發現問題了,第一步 find 明明只打印了文件,到後來怎麼出現了文件夾
其實我也很疑惑,肯定是 find 通過這個管道傳遞給 du 的過程中出了問題
查了一下資料,find 的輸出是文件名加一個換行符du 接受這個輸入時會出現問題,我們需要用 -print0 選項把 find 輸出的換行符改成 \\0,這個大家很熟悉吧,字符串的結束標誌,再配合用 xargs 將其分割成小塊傳給 du 命令
這裡可能有點難以理解,我也是,Unix/Linux 命令博大精深
最終命令
find ./ -type f -print0 | xargs -0 du -h | sort -rh | head -n 10
是不是覺得太長,改個名字吧,不如叫 fmax
大家千萬別再服務器上用find / ,極有可能崩潰
更多命令可以查看這篇文章:
如何在 Linux 中查找最大的 10 個文件
ok了,希望這篇文章能對大家有所幫助
閱讀更多 ourongxing 的文章