查看文件類型:file
如果你想要知道某個文件的基本數據,例如是屬於ASCII或者是data文件,或者是binary,且其中有沒有使用到動態函數庫等等的信息,可以用file查看
which (尋找“執行文件”)
whereis (尋找特定文件)
whereis是如何實先的呢,Linux系統會將系統內的所有文件都記錄在一個數據庫文件里面,而當使用whereis或者是locate時,都會以此數據庫文件
的內容為准,因為,有會你會發現使用這兩個執行文件時,會找到已刪除的文件,也切也找不到最新的剛才創建的文件。因為這兩個命令是由數據庫
當中的結果去查找文件的所在。
locate
locate尋找的數據是由已創建的數據庫/var/lib/mlocate/里面的數據所查詢到的,所以不用直接在硬盤中訪問數據,是很快速。
那么有什么限制呢?就是因為它是經由數據庫來查找的,而數據庫的創建默認是每天執行一次,所以當你創建文件后查詢該文件,那么locate
會告訴你找不到。因為必須要更新數據庫。那能否手動更新數據庫嗎?當然可以,更新locate數據庫的方法非常簡單,直接輸入“updatedb”就可以了
updatedb命令會去讀取/etc/updatedb.conf這個配置文件的設置,然后去硬盤里面進行查找文件名的操作,最后就更新整個數據庫文件了。因為updatedb
會去查找硬盤,所以當你執行updatedb時,可能會等待數分鍾時間。
find
關於參數-n,如圖所示
+4 代表大於等於5天前的文件名
-4 代表小於等於4天內的文件名
4 則是代表4-5那一天的文件名
如果將系統里面某個賬號刪除了,但是賬號已經在系統內創建了很多文件時,就可能發生無主孤魂的文件存在。此時可以用-nouser來找出該類型文件。
-perm這個參數,他的重點在找出特殊權限的文件。SUID與SGID都可以設置在二進制程序上,假設想要將/bin 、/sbin這兩個目錄下只要有SUID或者
SGID的文件就列出來,你可以這樣做:
因為SUID是4分,SGID是2分,總共6分,因此可用+6000來處理這個權限。find后面可以接多個目錄進行查找,另外find本來就會查找子目錄。
范例把的例子以圖解來說明,如圖
{}代表的是“由find找到的內容”,如夯土,find的結果會被放置到{}位置中。
-exec一直到“\;”是關鍵字,代表find額外命令的開始(-exec)到結束(\;),在這中間就是find命令內的額外命令。在上例中就是“ls -l{}”
因為“;”在bash環境下有特殊意義,因此利用反斜杠來轉義。
如果要找的文件是具有特殊屬性的,例如SUID、文件所有者、文件大小等,那么利用locate是沒有辦法找到。用find就很重要啦。
find還可以利用通配符來找文件名。比如想找/etc下面文件名包含httpd的文件: