find在不指定查找目錄的情況下是對整個系統進行遍歷查找
使用格式 : find [指定查找目錄] [查找規則] [查找完后執行的action]
[指定查找目錄]例如:
[root@room9pc01 images]# find /etc/ /tmp/ /root -name passwd
這里要注意的是目錄之間要用空格分開
[查找規則]
(1)根據文件名查找
# -name //根據文件名查找(精確查找)
# -iname //根據文件名查找,但是不區分大小寫
這里另外介紹下文件名通配的知識
*表示 通配任意的字符
[root@room9pc01 ~]# find / -name "*.img"
?表示 通配任意的單個字符
[root@room9pc01 ~]# find /etc/ -name "passw?
[ ] 表示 通配括號里面的任意一個字符
[root@node4 ~]# find / -name "[ab].sh"
(2)根據文件所屬用戶和組來查找文件
# -user //根據屬主來查找文件
# -group //根據屬組來查找文件
(3)根據uid 和 gid來查找用戶
#find /tmp -uid 500 //查找uid是500 的文件
#find /tmp -gid 1000 // 查找gid是1000的文件
(4)根據文件時間戳的相關屬性來查找文件
我們可以使用stat命令來查看一個文件的時間信息 如下:
#-atime
#-mtime
#-ctime
#-amin
#-mmin
#-cmin
所以這里atime,mtime,ctime就是分別對應的“最近一次訪問時間”“最近一次內容修改時間”“最近一次屬性修改時間”,這里的atime的單位指的是“天”,amin的單位是分鍾
#find /tmp –atime +5 //表示查找在五天內沒有訪問過的文件
#find /tmp -atime -5 //表示查找在五天內訪問過的文件
(5)根據文件類型來查找文件
-type
f // 普通文件
d //目錄文件
l //鏈接文件
b //塊設備文件
c //字符設備文件
p //管道文件
s //socket文件
(6)根據大小來查找文件
-size
#find /tmp -size 2M //查找在/tmp 目錄下等於2M的文件
#find /tmp -size +2M //查找在/tmp 目錄下大於2M的文件
#find /tmp -size -2M //查找在/tmp 目錄下小於2M的文件
(7)根據文件權限查找文件
-perm
#find /tmp -perm 755 //查找在/tmp目錄下權限是755的文件
#find /tmp -perm +222 //表示只要有一類用戶(屬主,屬組,其他)的匹配寫權限就行
#find /tmp -perm -222 //表示必須所有類別用戶都滿足有寫權限
(8)-nouser and -nogroup
#find / -nogroup –a –nouser //在整個系統中查找既沒有屬主又沒有屬組的文件(這樣的文件通常是很危險的,作為系統工程師的我們應該及時清除掉)
[查找完執行的action]
# -print //默認情況下的動作
# -ls //查找到后用ls 顯示出來
# -ok [commend] //查找后執行命令的時候詢問用戶是否要執行
# -exec [commend] //查找后執行命令的時候不詢問用戶,直接執行
這里要注意{}的使用:替代查找到的文件
#find /tmp -atime +30 –exec rm –rf {} \; #刪除查找到的超過30天沒有訪問過文件
例:找出所有用戶 student 擁有的文件,並且把它們拷貝到/root/findfiles 目錄中
[root@serverX ~]# mkdir /root/findfiles
[root@serverX ~]# find / -user student -type f -exec cp -p {} /root/findfiles/ \;
或者
[root@serverX ~]# cp -p
$(find / -user student -type f) /root/findfiles/