一、查找某個目錄下最大的10個檔案
find . -type f -print0 | xargs -0 du -h | sort -rh | head -n 10
注:-print0的目的是為了避免查找的檔案中檔案名包含空格會引起後續的xargs指令出現問題。-print0和xargs後面的-0是對應的。
二、查找已被删除但是磁盤空間未釋放的最大的10個檔案
lsof -s | grep deleted | sort -nr -k7 | head -n 10
注:何時會執行這個指令呢?一般的心路曆程大緻如下:通過df指令發現磁盤空間不足,然後通過上文的指令一,找到最大的N個檔案(一般都是些日志檔案),通過rm指令将這些檔案删除,然後df發現磁盤空間并沒有釋放掉。這是由于打開這些檔案的程序并沒有終止導緻的,是以需要通過該指令找出打開這些檔案的程序号,再kill -9将其殺掉,空間即可釋放。指令中之是以加上-s是為了跟後面的sort配合,sort中的-k7的含義是根據第7列進行排序,預設不指定-s的話,lsof指令顯示的第7列的列名為"SIZE/OFF",顯然表示這一列會有兩種含義,對于有大小的檔案,這一列展示檔案的大小,但是有些檔案是沒有大小的,如TCP連接配接,這時這一列的值會展示"0t0"這種的形式,顯然不能跟檔案大小這樣的數值一起排序,是以指定-s,那麼這一列的列名就隻會顯示"SIZE",對于那些沒有大小的檔案,這一列的值會留白。
三、查找目前目錄下建立時間大于3天的檔案并删除
注:-ctime中的’c’表示建立時間,如果是通路時間則是-atime,如果是修改時間則是-mtime,與
find
選項結合具有非常大的威力,
-exec
後面跟上需要執行的指令,
-exec
代表find找出來的每一項目錄或者檔案,
{}
用于結束指令。
\;