使用 Find 命令來幫你找到那些須要清理的文件

    我見過的一種解決問題的方法是建議使用者將全部的數據碎屑建立一個文件集合的總結報告或"概況",來報告諸如全部的文件數量;最老的,最新的,最大的文件;並統計誰擁有這些文件等數據。若是有人看到五年前的一個包含五十萬個文件的文件夾,他們可能會去刪除哪些文件 -- 或者,至少會歸檔和壓縮。主要問題是太大的文件夾會令人擔憂誤刪一些重要的東西。若是有一個描述文件夾的方法能幫助顯示文件的性質,那麼你就能夠去清理它了。bash

    當我準備作 Unix 文件系統的總結報告時,幾個有用的 Unix 命令能提供一些很是有用的統計信息。要計算目錄中的文件數,你可使用這樣一個 find 命令。spa

$ find . -type f | wc -l
187534

    雖然查找最老的和最新的文件是比較複雜,但仍是至關方便的。在下面的命令,咱們使用 find 命令再次查找文件,以文件時間排序並按年-月-日的格式顯示,在列表頂部的顯然是最老的。code

在第二個命令,咱們作一樣的,但打印的是最後一行,這是最新的。orm

$ find -type f -printf '%T+ %p\n'| sort | head -n 1
2006-02-03+02:40:33./skel/.xemacs/init.el
$ find -type f -printf '%T+ %p\n'| sort | tail -n 1
2015-07-19+14:20:16./.bash_history

    printf 命令輸出 %T(文件日期和時間)和 %P(帶路徑的文件名)參數。排序

    若是咱們在查找家目錄時,無疑會發現,history 文件(如 .bash_history)是最新的,這並無什麼用。你能夠經過 "un-grepping" 來忽略這些文件,也能夠忽略以.開頭的文件,以下圖所示的。emacs

$ find -type f -printf '%T+ %p\n'| grep -v "\./\."| sort | tail -n 1
2015-07-19+13:02:12./isPrime

    尋找最大的文件使用 %s(大小)參數,包括文件名(%f),由於這就是咱們想要在報告中顯示的。it

$ find -type f -printf '%s %f \n'| sort -n | uniq | tail -1
20183040 project.org.tar

    統計文件的全部者,使用%u(全部者)class

$ find -type f -printf '%u \n'| grep -v "\./\."| sort | uniq -c
180034 shs
7500 jdoe

    若是文件系統能記錄上次的訪問日期,也將是很是有用的,能夠用來看該文件有沒有被訪問過,比方說,兩年以內沒訪問過。這將使你能明確分辨這些文件的價值。這個最後訪問(%a)參數這樣使用:grep

$ find -type f -printf '%a+ %p\n'| sort | head -n 1
FriDec1503:00:302006+./statreport

    固然,若是大多數最近訪問的文件也是在好久以前的,這看起來你須要處理更多文件了。方法

$ find -type f -printf '%a+ %p\n'| sort | tail -n 1
WedNov2603:00:272007+./my-notes

    要想井井有條,能夠爲一個文件系統或大目錄建立一個總結報告,顯示這些文件的日期範圍、最大的文件、文件全部者們、最老的文件和最新訪問時間,能夠幫助文件擁有者判斷當前有哪些文件夾是重要的哪些該清理了。

相關文章
相關標籤/搜索