Linux文件查找之find&locate

Linux文件查找之find&locate

一、概述

    Linux系統核心的思想之一“一切皆文件“,對於這麼多的文件,如何快速查找過濾呢?下面我們就看看系統提供的文件查找命令find和locat,熟練使用find命令是運維人員的必經之路


二、find的用法及示例

1.find特點

查找速度略慢

精確查找

實時查找

只能搜索有讀取和執行權限的目錄


2.find用法

     用法:find  [options]  [查找路徑]  [ 查找條件]  [處理動作]

     查找條件:

根據文件類型查找
	-type f|d.......
	f			普通文件
	d			目錄
	l			鏈接
	s			套接字
	b			塊設備
	c			字符設備	
	p			管道文件
	根據屬主、屬組查找
	-user name			查找目錄下屬主爲name的文件
	-group g1			查找屬組爲g1的文件
	-uid #			查找uid爲#的文件
	-gid #			查找gid爲#的文件
	-nouser			查找沒有屬主的文件
	-nogroup			查找沒有屬組的文件
	特定選項
	-mindepth level		設置最小搜索層級
	-maxdepth level		設置最大搜索層級
	-name				匹配文件名搜索,支持通配符	
	-iname			以名稱搜索,忽略文件名大小寫
	-inum #			按inode號搜索
	-samefile 			搜索相同inode號的文件
	-links #			搜索鏈接數爲#的文件
	-regex "pattern"		搜索匹配該字符串的文件
	-prune			將某個目錄排除在搜索路徑之外
	根據文件大小查找
	-size  [+|-]#(單位)	常用單位:k  M  G
  	      	6k		表示5k<S≤6k
			-6k		表示0≤S≤5k
			+6k		表示S>6k 
	根據時間戳查找	
	-atime  [+|-]#		+5:5天以前  -10:十天以內
	-atime   			訪問時間,以天爲單位 
	-mtime			更改時間,以天爲單位
	-ctime			改變時間,以天爲單位
	-amin				以分鐘爲單位
	-mmin				以分鐘爲單位
	-cmin				以分鐘爲單位

根據權限查找

-perm [/|-]mode

mode 精確權限匹配 如:find -perm 222  匹配權限爲222的文件  

/mode 權限位(ugo),只要有一位匹配即可,或者關係  

                如:find -perm /222  只需一個權限位有寫權限即可

-mode 指定權限權限位都必須匹配  

                如:find -perm -222  各權限位都有寫權限

注意三種權限的區別

組合條件

-a

-o

-not,!

燒腦的非選項

!A -a !B=!(A -o B)

!A -o !B=!(A -a B)

      處理動作

-print 打印匹配文件

-ls 長格式顯示匹配文件

-delete 刪除匹配文件

-fls outfile 輸出到指定文件

-ok cmd {} \; 對查找到的每個文件執行cmd命令,交互確認

-exec cmd {} \; 執行cmd命令,不進行交互確認

{} 代表查找到的文件自身

注意:由於是find查找到的文件,是一次性傳遞給後面的cmd命令,有寫命令會出現報錯現象,可使用xargs解決

find  .......   |   xargs   cmd

3.find使用實例

①、搜索/var目錄下文件名中含有log的文件

find /var -name "*log*"

②、搜索/app目錄下屬主爲tom,數組爲g1的文件

find /app  -user tom -a -group g1

③、搜索/app目錄下屬主不是tom,也不是joe的文件

find /app -not -user tom -a -not -user -joe

find /app -not \(-user tom -o -user joe\)

④、刪除存在時間超過3天以上,屬主爲tom的臨時文件

find /tmp -ctime +3 -user tom -ok rm {} \;

⑤、查找自己家目錄可以被其他用戶寫入的文件,並去掉其他用戶的寫權限

find ~ -perm -022 -exec  chmod  o-w  {}  \;

⑥、查找/var目錄下10以前修改的文件

find /var -mtime +10 -print

⑦、查找/var目錄下10以內修改的文件

find /var -mtime -10 

⑧、查找/var目錄更改時間下比file1.log新,比file2.log舊的文件

find /var -newer file1.log -a -not -newer file2.log

⑨、查找/etc一級目錄下所有的目錄文件

find /etc -maxdepth 1 -type d 

⑩、查詢/目錄下大於100M的文件

find / -size +100M

11、刪除/root一級目錄中非隱藏文件的普通文件

find ~ -maxdepth 1 -type f |grep -v "/root/\."

12、查詢當前系統中沒有屬主和屬組的文件

find / -nouser -a -nogroup

13、查找系統中所有具備suid權限的文件

find / -perm /u=s

14、查找系統中所有具備sgid權限的文件

find / -perm /g=s

15、查找/etc所有可執行文件

find /etc -perm /a=x

16、查找系統中所有空文件

find / -type f -empty      

17、查詢/etc目錄下所有隱藏文件

find /etc -type f -name ".*"

18、查找50-100內被修改過的文件

find / -mtime +50  -mtime -100

19、查找最近1小時被修改過的文件

find / -mmin -60


三、locate用法及示例


1、locate概述

相比find,locate查找速度比較快,但由於其僅支持非實時查找,使用率不高


2、locate工作特點

查找速度快

非實時查找

搜索文件全路徑

只能搜索用戶具備讀取和執行權限的目錄


3、locate用法

locate [options]  匹配模式

-i 不區分大小寫搜索

-n # 只列舉前#個匹配項


4、示例

locate conf 查找文件名中含有conf的文件


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章