一,在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,如需轉載請自行聯系原作者