有的時候我們需要快速查找一些文件,但是我們卻不知道這個文件在哪的時候,就急切的需要一個工具來幫助我們,這時候find就誕生了。Find能實現精確查找,雖然速度略慢,但是并不妨礙我們使用,下面就介紹一下find的使用方法。
(一) 基于時間戳的查找
假如需要查看七天前的文件,但是總不能一一的去看時間查找,這點和windows不一樣,windows可能是默認的按時間先后順序排列的,所以在這里我們就要基于命令去查找了。以天為單位的選項分別有atime,mtime,ctime.
分別是訪問時間,文件數據修改時間,文件元數據修改時間。下面舉例說明,以便讓大家更好的明白。
Eg: 查詢/app目錄下五天以內被訪問的文件
解釋:-atime 就是訪問時間,-5就是指0到5天以內的,-ls就是長列出所查到的文件,這里需要說明一下時間的問題。如果是按時間或者天數來算的話,-5是[0,5),意思就是大于等于0 且小于5,+5是[6,無窮),意思就是大于等于6,直接就一個5的話,就是[5,6),意思就是大于等于5且小于6.
(二) 基于文件用戶名查找
假如你想找user是joe的文件,只需選項-user.
Eg:查找/app下所屬人為liubei的文件
解釋:/app/* 就是查找/app下的文件,不包括app目錄本身,小編之前犯了錯誤,把目錄本身也截取下來了,在這里提醒廣大用戶,不要犯同樣的錯誤,但是如果你想要把目錄也一起算的話就把/*去掉就可以了。-user就是基于用戶名查找。
(三) 基于文件大小查找
假如想查找文件大于1M的,只需選項-size
Eg:查/app下大于1M的文件
首先看一下app下的文件大小哦,這里文件大于1M的只有a1
下面開始截取符合規定的文件
解釋:-size就是基于文件大小查找,+1M就是(1,無窮),意思就是大于1M的文件。
(四) 基于文件類型查找
假如想查找/app下的普通文件,只需選項-type f.
Eg:查找/app下的目錄文件
解釋:-type就是基于類型查找,d就是目錄的意思,f為普通文件,l符號鏈接文件,S套接字文件,b塊設備文件,c字符設備文件。
(五) 基于文件權限查找
選項是-perm 權限
Eg:查找/app下有執行權限的文件
解釋:-perm就是 基于權限的查找,/111意思是ugo任意一位有執行權限就可以。
(六) 基于組名的查找
選項是 –group 組名
Eg:查找/app下組名是liubei的文件
解釋:-group 就是基于組名的查找。
(七) 基于文件uid的查找
選項是-uid userid
Eg:查找/app uid為1004的文件
(八) 基于文件名稱的查找
選項是-name
Eg:查找/app下 文件名為a開頭的文件
解釋:a*的意思就是以a開頭 后面跟任意內容的文件。
(九) 基于沒有所屬人沒有所屬組的查找
假如一個文件所屬人,所屬組被刪除了,但是想查找,就需要這個命令,-nouser -nogroup
Eg:查找沒有所屬組的文件
Eg:查找沒有所屬人的文件
解釋:-nouser就是沒有所屬人,-nogroup就是沒有所屬組
下面給出一些平時的練習,以供參考。
1.查找/var目錄下不屬于root、lp、gdm的所有文件
解題方法:find /var -not \( -user root -o -user lp -o -user gdm \) -ls
解題思路:-o就是或的意思,-a就是且的意思,-not就是非的意思。在這里使用了德摩根定理,如下:
(非 A) 或 (非 B) = 非(A 且 B)
(非 A) 且 (非 B) = 非(A 或 B)
所以查找不屬于三個用戶的文件就是不屬于root,也不屬于lp,也不屬于gdm,所以用-not的話 ,括號里面就要用或的關系,才能保證三個條件都滿足。
2.查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件
解題方法:find / \( -nouser -o -nogroup \) -a -atime -7 –ls
解題思路 :使用-o就是或的關系,但是中間要用括號括起來,不然的話后面的-a連著的就只有 –nogroup了,使用\是轉義的意思,在這里不能直接識別括號,所以需要轉義。
3.查找/etc目錄下所有用戶都沒有寫權限的文件
解題方法:find /etc ! -perm /222 –ls
解題思路:前面說過/111,這里/222意思和那個是大致一樣的,意思就是任意一位有讀權限就可以,前面加個!就是非的意思,這里使用德摩根定理,不會的同學可以看一下前面的。
原創文章,作者:lll,如若轉載,請注明出處:http://www.www58058.com/84625