利用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 有執行和寫的許可權