天天看點

解析find用法

一,在linux上有兩個比較常用的搜尋工具

1,locate :模糊查找,速度快,依賴自身的的資料庫,非實時查找,比較少用。

2,find:精确,實時查找,速度稍微慢點。

二,find文法 find [-H] [-L] [-P] [path...] [expression]

其中,'-H' '-L' '-P'三個選項主要是用來處理符号連接配接,'-H'表示隻跟随指令行中指定的符号連接配接,'-L'表示跟随所有的符号連接配接,'-P'是預設的選項,表示不跟随符号連接配接。這三個選項很少用,是以find  的文法簡化成   find   路徑   表達式,  表達式由查找條件和處理動作組成。預設路徑是目前所在的目錄

1, 查找條件:

(1)-name filename(可以使用通配符*,使用通配符時用雙引号引起來)

查找目前系統上passwd的檔案名

find / -name passwd

(2)-iname 忽視查找檔案名的大小寫

查找目前系統上PASSWD和passwd的檔案

find / -iname passwd

(3)-regex "patern" 使用基本正規表達式  給出的正規表達式必須要比對完整的檔案路徑

find / -regex "find" 找不到/usr/bin/find

正确用法find / -regex ".*find"或者更精确一點find / -regex ".*/find"

(4)-iregex 忽然大小寫

(5)-user username

查找檔案的屬主是user1的

find / -user user1

(6)-group groupname

查找目前系統屬組是nobody的檔案

find / -group nobody

(7)-uid  usernum

查找檔案的屬主uid為 500

find / -uid 500

(8)-gid  group

(9)-nouser

查找目前系統沒有屬主的檔案

find / -nouser  

(10)-nogroup

2,多條件查找,條件間邏輯關系:

(1)-a(與)  同時滿足兩個條件

查找/etc檔案名為passwd且屬主為root

find /etc/ -name "passwd" -user root(預設是 -a 可以省略)

(2)-o(或)

查找/etc檔案名為passwd或屬主為user

find /etc/ -name "passwd"  -o -user root(-o不能省略)

(3)! (非)或-not

查找 /etc檔案名包含passwd 或者 屬主不是root的檔案

find /etc/ -name "passwd*"  -o  -not -user root

三,-type 根據檔案類型

(1)f 正規檔案

查找目前系統檔案名passwd且是普通檔案

find / -name passwd -a -type f

(2)d 目錄

(3)l 連結檔案

(4)b 塊裝置

(5)c 字元裝置

(6)p 資料傳送檔案

(7)s socket裝置

4, -size (k|M|G)預設機關是位元組

(1)+4M(大于4M)

查找檔案大小為大于4M

find /boot  -size +4M

(2)-4M(小于4M但是3M--4M不在這個範圍)

(3)4M(查找3M--4M)

5,day(機關為天)

(1)-atime [+/-] (通路時間)

查找第3天被通路過的檔案

find / -atime 3

查找最近3天通路過的檔案

find / -atime -3

查找3天之前被通路的檔案

find / -atime +3

(2)-mtime(修改時間)

(3)-ctime(改變時間)

6, minute(機關分鐘)

(1)-amin

(2)-mmin

(3)-cmin

7,權限-perm

(1)mode  查找檔案權限剛好等于mode

查找 檔案權限為222

find / -perm 222

(2)/mode  模糊比對(隻要滿足其中一個就會比對到)

查找user權限為7或group權限為7或others權限為7的

find / -perm  /777

(3)-mode  必須要全部包括mode權限(比mode大的也會被比對到)

查找檔案權限大于777

find / -perm -777

8,  處理動作:預設是 -print把結果列印到螢幕上

-exec  command {} \;(将前面查找的結果輸入給command指令,{}表示占位符)

查找目前沒有屬主和屬組的檔案,将它們屬主,組改成root

find / -nouser -a -nogroup -exec chown root:root {} \;

9,find與xargs将find查找到的結果用管道輸入給xarg

find |xargs command

查找一個檔案為PASSWD的檔案并删除

find / -name PASSWD |xargs rm -f

在/tmp下找到檔案名是core的檔案,自動切換到新行,并且删除。

find  /tmp -name core  -type f -print  |xargs /bin/rm -f

在/tmp下找到檔案名是core的檔案,不自動切換到新行,并且删除。

find /tmp -name core -type f -print0 | xargs -0 /bin/rm -f

讀取/etc/passwd裡的使用者并用echo顯示

cut -d: -f1 </etc/passwd |sort |xargs echo

exec 後面跟可執行檔案,如果在腳本裡寫exec /sbin/halt 表示會在目前shell執行,不會在目前shell的子shell中執行。

10,檢視檔案沒有屬主,屬組 find / -nouser -nogroup (-a可以省略)

11,查找沒有屬主或屬組的 find / -nouser -o nogruop

12, ind ./ -type f -name '*.php'  可周遊目錄

13, find ./ -maxdepth 1 -name '*.php' 不周遊,隻尋找一級目錄

14,檢視db_summba_site開頭的檔案

find /cloud/databackup/databasebakup/   -mtime +30 -a -name  'db_summba_site*'  |xargs ls

本文轉自 deng304749970 51CTO部落格,原文連結:http://blog.51cto.com/damondeng/903149,如需轉載請自行聯系原作者