locate和find
在linux中最常用的搜索命令有locate和find,現在我來介紹locate和find
locate 非實時性查找,是根據數據庫模糊匹配,而且匹配結果的字符串在整個路徑中都有可能出現。
Locate –i 忽略大小寫
-n N顯示匹配到的前N個文件
locate對應的數據庫,可以用updatedb來更新locat的數據庫,查找到的數據可能不存在,因爲數據在不停變化,而數據庫則只在固定的時間更新。
find 的使用:
find [DIR1,DIR2……] [criteria,……] [action……]
eg: find /etc -user root -exec ls –l {} \;
[ criteria ] :
-name 精確匹配
-iname 不區分大小寫
-user 文件的創建者
-group 文件所屬的組
組合多個條件時:
-a 邏輯與(也是默認的)
-o 邏輯或
-not 邏輯非
在使用時可以使用()但需要轉義即\( \)中間寫入想放 在一起的命令。
按權限查找:
-perm nnn 表示精確匹配權限是nnn的文件
-nnn 表示包含了nnn權限的文件
/nnn 表示三組權限中三種權限(rwx) 中只要有任意權限的就匹配到
文件大小查找:
-size N+單位 表示小於1單位的文件
+N+單位 表大於N單位的文件
-N+單位 表小於N單位的文件但大於 N-1的文件
其單位有k,b,M,G。
類型查找:
-type f,d,c,l,b,p,s,分別表示:普通文件,目錄文件,字符文件,連接文件,塊兒文件,命名管道文件,套接字文件
根據時間查找:
-amin 訪問時間(分鐘)
-cmin 更改元數據時間
-mmin 更改數據內容時間
同樣還有 atime爲天數
後面的參數方式相同,有 N ,+N,-N
分別表示在第N分鐘(天)在N分鐘(天)之 前在N天之內
[action]
-exec 後可以直接跟linux對文件操作的命令不過要以 \; 結束,其中執行的命令不需要 確認直接執行
-OK 同-exec相同,但強制確認,尤其是對刪 除,移動的操作
-ls 列出文件的詳細信息
-print 輸出(是默認的方式)
eg: find /tmp -atime -6 -exec mv {} {}.old \;
意爲對訪問時間大於6天的文件重命名後加.old
eg: find /tmp -not -perm /111 –name “*.sh” -exec chmod +x {} \;
對沒有執行權限的shell腳本加上執行權限
eg: find / -not \( -user root –o -user bin –o –user redhat \) –ls
顯示系統中非root bin redhat 三個用戶的文件