解析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,如需轉載請自行聯系原作者
總結
- 上一篇: NA-NP-IE系列实验30:CHAP
- 下一篇: CENTOS6.3下zabbix安装部署