專門的檔案查找工具----find
find指令用來在某個目錄及其子目錄中查找特定的檔案。find指令很強大,它實時的搜尋目錄樹。
常見用法示例:
find path -option [-print] [-exec -ok command] {} \;
- #print将查找到的檔案輸出到标準輸出
- #exec command {}\;将查找到的檔案執行command操作。{}和 \之間有空格
- #ok 和 exec相同,差別在于操作前要詢問使用者,是互動式的
查找條件如下圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuYDMzkTM4MDMx8CX2AjMxAjMvwFduVWboNWY0RXYvwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
多個處理動作之間用邏輯關系來連接配接:-a(與) -o(或) !(非)
1 根據檔案名大小寫
-name filename 區分大小寫
-iname filename 不區分大小寫
(為了示範需要,在目前目錄下建立兩個檔案 passwd 和PASSWD)
可以清楚的看到-name 區分大小寫;-iname不區分大小寫
2 根據檔案屬主、屬組
-user username 根據屬主
-group groupname 根據屬組
-uid 根據指定UID
-gid 根據指定GID
-nouser 指定沒有屬主的檔案
-nogroup 指定沒有屬組的檔案
(為了示範需要,把passwd的屬組改為redhat ;把PASSWD的屬主改為redhat;id -u redhat 為501)
3 根據檔案類型
-type b/c/d/f/l/p 查是塊裝置、字元裝置、目錄、普通檔案、符号連結、管道
(為passwd 建立一個連結為pas)
-type的其他選項,用法相同
4 根據檔案大小
-size nk 大小為1-nk的檔案
-size +nk 大于nk的檔案
5 根據檔案的時間狀态
解釋什麼是atime ctime mtime
atime (access time):最後一次通路檔案的時間
mtime(medify time):最後一次修改檔案的時間
ctime(change time):最後一次改變檔案(改變的是原資料即屬性)的時間
如:記錄該檔案的inode節點被修改的時間。touch 指令除了-d -t選項外都會改變改時間,而且chmod,chown等指令也能改變該值
三者之間的關系
當修改mtime時,ctime必須随着改變,因為檔案大小等屬性;有人說atime 也一定會改變,要想修改檔案必須先通路;其實是不對的,不必通路檔案就能修改内容:如#echo "change it" >> /etc/inittab ,inittab檔案内容會改變,但并沒有通路檔案,是以atime沒有改變
檢視三者的指令
stat filename 可以檢視三者的時間值
ls -l filename 檢視檔案修改時間
ls -lc filename 檢視檔案狀态改動時間
ls -lu filename 檢視檔案通路時間
修改三者的指令
touch [option] [[CC]YY]MMDDhhmm[.ss]
options:
-t 後面可接時間,其格式如上所述
-a 僅修改access time
-c 僅修改時間而不建立檔案
-m 僅修改mtime
201206241045.30 表示時間為:2012年6月24日10點45分30秒
(拷貝/etc/inittab 到目前目錄下,作為例子)
對于-type的用法如下
-atime/-ctime/-mtime 機關是天
-amin/-cmin/-mmin 機關是分
-amin/-cmin/-mmin n/+n/-n 剛好n天/超過n天/n天之内
查找目前目錄下5分鐘之内ctime 改變的檔案
6 根據檔案通路權限
find -perm mode
find -perm -mode
find -perm /mode
那麼這三者之間有什麼差別呢?解釋之前先簡單說一下linux中檔案權限位的概念。在linux中檔案或目錄有3個權限r,w,x分别代表讀、寫、執行。而一個檔案或目錄的屬性中又包括屬主u、屬組g、其他o三個部分。
屬主 屬組 其他
rwx rwx rwx
使用者在其擁有權限上的位上設定為1,沒有的權限的位設定為0.如果将每個部分的這些權限位看成是二進制數,每個部分可以用3位二進制數表示,最大值為7,表示可讀、可寫、可執行。
現在來看一下find -perm
find -perm mode 表示嚴格比對,也是就你的檔案權限位轉換成對應的十進制數與mode一摸一樣,才算比對成功,如果mode給的數字不足3位,那麼前面自動添加0
find -perm -mode 表示mode中轉換成二進制的1在檔案權限位裡面必須比對,比如:mode=644 那麼轉換成二進制為110 100 100 ,而被查找的檔案的的權限位在1的部分必須完全比對,而0則不管。例如被查找的檔案為111 111 111 那麼是比對成功,而100 100 100 則比對失敗。是以-mode就是比對比mode 權限更充足和完善的檔案
find -perm /mode 與-mode的差別是它隻需要其中任意一個1的部分被比對即可
可以看到 a ab abc 的權限分别為600 640 666
find -perm 640 是做精确比對,隻會比對到640即 ab
find -perm -640 做比640更充足的比對,當然666是滿足的,即 ab abc