find(locate由於需要更新數據庫,所以不怎麼常用)是Linux下很強大的文件查找命令,具有如下特 點。
1.實時,新增的文件可以立即找到
2.精確
3.支持眾多查找標准,根據用戶的屬主,權限,屬組,時間戳來查找。
4.遍歷指定目錄中的所有文件完成查找,速度較慢。
find的語法規則:
find 查找路徑 查找條件 查找到以後的處理運作
查找路徑:默認為當前目錄
查找條件:默認為指定路徑下的所有文件
處理運作:默認為顯示查找後的結果
###################################################################
查找條件:
-name 'FILENAME':對文件名作精確匹配
文件名通配:
*:任意長度的任意字符
?
[]
-iname 'FILENAME': 文件名匹配時不區分大小寫
-regex PATTERN:基於正則表達式進行文件名匹配
-user USERNAME: 根據屬主查找
-group GROUPNAME: 根據屬組查找
-uid UID: 根據UID查找
-gid GID: 根據GID查找
-nouser:查找沒有屬主的文件
-nogroup: 查找沒有屬組的文件
-type #按照文件類型進行查找
f: 普通文件
d: 目錄
c:字符設備文件
b:塊設備文件
l:鏈接文件
p:管道文件
s:套接字文件
-size [+|-] #按照文件的大小進行查找 加號代表大於,減號代表小於
#k KB
#M MB
#G GB
查找條件可以進行組合
-a 邏輯與
-o 邏輯或
-not 邏輯非
-mtime 文件的修改時間 #按照時間戳進行查找
-ctime 文件的改變時間
-atime 文件的訪問時間
[+|-]# 加號代表代表某個時間之前,減號代表某個時間以內,單位默認是天
例如,+1代表一天之前,-1代表一天以內
-perm MODE:精確匹配
/MODE: 任意一位匹配即滿足條件
-MODE: 文件權限能完全包含此MODE時才符合條件
-644
644: rw-r--r--
755: rwxr-xr-x
750: rwxr-x---
find ./ -perm -001
##############################################################################
查找完成後的處理操作
運作:
-print: 顯示
-ls:類似ls -l的形式顯示每一個文件的詳細
-ok COMMAND {} \; 每一次操作都需要用戶確認
-exec COMMAND {} \;#注意,後面的\;不能省略,代表命令的結束。並且\;與{}之間有一個空格。
############################################################################
下面給出幾個例子:
1、查找/var目錄下屬主為root並且屬組為mail的所有文件;
find /var -user root -group mail
2、查找/usr目錄下不屬於root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -not -user student
find /usr -not \( -user root -o -user bin -o -user student \)
3、查找/etc目錄下最近一周內內容修改過且不屬於root及student用戶的文件;
find /etc -mtime -7 -not \ ( -user root -o -user student \)
find /etc -mtime -7 -not -user root -a -not -user student
4、查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,並將其屬主屬組均修改為root;
find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5、查找/etc目錄下大於1M的文件,並將其文件名寫入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
6、查找/etc目錄下所有用戶都沒有寫權限的文件,顯示出其詳細信息;
find /etc -not -perm /222 -ls
本文出自 “厚積薄發” 博客,請務必保留此出處http://joedlut.blog.51cto.com/6570198/1826592