利用file命令檢視那檔案的型別
cd /etc 這裡面的檔案
命令:file
語法:file [-bLvz] 檔案
解釋:-b:顯示結果,但是不顯示檔名稱
-L:直接顯示符號連結所指向的檔案的型別
-v:顯示版本資訊
-z:測試去讀取壓縮檔案的內容
直接file 檔案,不加任何引數可以顯示檔案型別
更多用法請使用manpage檢視。
linux命令搜尋之which命令
命令:which
語法:which [-a] 命令
解釋:-a:將PATH中可以找到的指令都列出來,而不是第一個被找到的名稱
檔案查詢命令
命令之一:whereis
語法:whereis [-bmsu] 目錄或檔名
解釋:-b:只找binary(二進位制)格式的檔案
-m:只找在說明檔案manual路徑下的檔案
-s:只找source來源檔案
-u:搜尋不在上述三個專案當真的其他特殊檔案
whereis搜尋非常快速,因為它是基於資料庫。該資料庫檔案並不是實時更新,預設情況下時一星期更新一次,因此,我們在用whereis和locate 查詢檔案時,有時會找到已經被刪除的資料,或者剛剛建立檔案,卻無法查詢到,原因就是因為資料庫檔案沒有被更新。
命令之二:locate
語法:locate [-ir] keyword
解釋:-i :忽略大小寫
-r :使用正規運算式做尋找的條件
locate 使用很簡單,只要後面跟關鍵字就行了,搜尋起來也非常快速,因為它也是基於資料庫的。
命令之find
語法:find [路徑] [option] [action]
解釋:find的引數有很多,我們介紹簡單一點的,更多用法記得man find 。
與時間相關的選項:-atime,-ctime和-mtime,以-mtime說明:
-mtime n :n 為數字
-mtime +n :n天之前(不含n天本身)
-mtime -n:n天之內(含n天本身)
-nwer file:file為一個存在的檔案,列出比file更新的檔案。
find相關的時間的意義:
+4代表大於等於5天前
-4:代表等於4天內
4:代表4-5那一天。
按名稱查詢
find [路徑] -name 名稱
找出 /etc/下 名為passwd的檔案
分析與思考
1、請說明whereis和find有何區別?它們各自的優缺點是什麼?
區別:whereis命令是通過檔案索引資料庫而非PATH來查詢的,find命令是通過直接搜尋硬碟的方式查詢的。
whereis的優點:效率很高。
whereis的缺點:只能用於程式名的搜尋,而且只搜尋二進位制檔案(引數-b)、man說明檔案(引數-m)和原始碼檔案(引數-s)
find的優點:保證查詢的資訊絕對可靠。並且支援各種查詢條件。
find的缺點:搜尋速度慢
2、請使用man page,如何使用find 命令查詢/etc下大於500K的檔案?
man find:
-name 按照檔名查詢檔案
-perm 按檔案許可權查詢檔案
-user 按檔案屬主查詢檔案
-group 按照檔案所屬的組來查詢檔案。
-type 查詢某一型別的檔案,諸如:
b - 塊裝置檔案
d - 目錄
c - 字元裝置檔案
l - 符號連結檔案
p - 管道檔案
f - 普通檔案
-size n :[c] 查詢檔案長度為n塊檔案,帶有c時表文件位元組大小
-amin n 查詢系統中最後N分鐘訪問的檔案
-atime n 查詢系統中最後n*24小時訪問的檔案
-cmin n 查詢系統中最後N分鐘被改變檔案狀態的檔案
-ctime n 查詢系統中最後n*24小時被改變檔案狀態的檔案
-mmin n 查詢系統中最後N分鐘被改變檔案資料的檔案
-mtime n 查詢系統中最後n*24小時被改變檔案資料的檔案
(用減號-來限定更改時間在距今n日以內的檔案,而用加號+來限定更改時間在距今n日以前的檔案。 )
-maxdepth n 最大查詢目錄深度
-prune選項來指出需要忽略的目錄。在使用-prune選項時要當心,因為如果你同時使用了-depth選項,那麼-prune選項就會被find命令忽略
-newer 如果希望查詢更改時間比某個檔案新但比另一個檔案舊的所有檔案,可以使用-newer選項
3、讓一個普通使用者heetian能夠進行cp /dir1/file1 /dir2的命令時,請說明dir1,file1,dir2的最小所需許可權為何?
dir1 有執行的許可權
file 1有讀的許可權(被複制)
dir 2 有執行和寫的許可權