linux搜索日志组合条件,find查找
find查找是生產(chǎn)中最常見的日志查找工具
下面看看它的用法
基本用法:
find ? ?查找路徑 ? ?查找標準 ? ?查找到以后的處理動作
查找路徑:需要被查找的文件所在的路徑,一定是個目錄,默認情況下為當前的目錄
查找的標準:查找的時候用什么方式去查找
處理動作:文件查找完畢后,需要對查找出來的文件進行處理的動作,默認情況下為顯示
查找深度的限制:
可以對查找中文件路徑的深度進行控制
-maxdepth ?#
查找標準:
查找的標準一般包括以下的幾部分:
名字,時間,權(quán)限,類型,大小,屬主和屬組
名字:
-name “filename”
基于文件名查找的時候支持通配符
*,?,[] , ?[^]
-iname ? ?文件名匹配時不區(qū)分大小寫
-regex ? ? 基于正則匹配文件名正則來查找
類型:
-type ? 基于文件的類型查找
f ? ?普通文件
d ? ?目錄
s ? ?套接字文件
l ? ? 鏈接文件
這里有個注意點 :
find 執(zhí)行查找類型的時候是檢測文件本身的類型,比如A是鏈接文件A–>B,那么find判斷的是文件A的類型
與之相似的有一個叫 test 的命令,專用于檢測文件的類型,不過test檢測的時候是檢測B的類型
權(quán)限:
-perm ?MODE
mode ? 全部權(quán)限吻合才行
/mode ?給出的權(quán)限中只要滿足一個即可
-mode ? 文件權(quán)限包含時,即權(quán)限只能多,不能少
時間:
按時間來查找
-mtime
-ctime
-atime
[+|-]#
-mmin (分鐘計)
-cmin
-amin
三種時間后面可以跟 + – ?或者不加
+ ?代表的是超過
– ? 在…….的范圍內(nèi)
不加為精確匹配
大小:
-size
利用大小查找的時候需要注意的是,大小的精確定位,+ ?和 – 的區(qū)別
查找10K的時候,是9-10K 的文件,而如果是? -10K? ?的話,? 代表的是0-9K,? +10K代表的是10K以上
根據(jù)這個原理,查找1G的文件,千萬別寫成1G,因為這樣會將幾K的文件都列出來,正確的寫法是1024M
如果要精確到字節(jié)那么需要使用? c 為單位
屬主和屬組:
-uid n :n 為數(shù)字,這個數(shù)字是用戶的賬號 ID,亦即 UID ,這個 UID 是記錄在 /etc/passwd 里面與賬號名稱對應(yīng)的數(shù)字。
-gid n :n 為數(shù)字,這個數(shù)字是組名的 ID
-user name :name 為使用者賬號名稱
-group name:name 為組名喔,例如 users ;
-nouser :尋找文件的擁有者不存在 /etc/passwd 的用戶
-nogroup :尋找文件的擁有群組不存在于 /etc/group 的文件
其中 -nouser ?和 ?– nogroup 是可能存在的,比如你在網(wǎng)上下載了一個軟件,該軟件的擁有者并不再系統(tǒng)的用戶中,
或者事先已經(jīng)有個賬戶,且在系統(tǒng)中運行產(chǎn)生了各種數(shù)據(jù),后來你把用戶給刪除了,那么這些數(shù)據(jù)還在,此時就需要
用到上述兩個指令
執(zhí)行動作
-print:顯示
-ls ? ?類似ls ?-l 的方式顯示文件
-ok ?COMMAND ?{} ? \; ?其中的{}是用來引用需要修改文件名
-exec COMMAND {} ?\; ?作用同 -ok ?稍有區(qū)別的是-ok需要用戶每步都確認,而-exec不需要用戶的確認
多個條件之間的邏輯組合
-a ?與關(guān)系,多個條件同時滿足的時候才滿足要求
-o ?或關(guān)系,多個條件中一個條件滿足就行
! ?not ? : ?非關(guān)系,即取反
德爾摩根定律:
(非P)或(非Q)=非(P且Q)
(非P)且(非Q)=非(P或Q)
使用-o條件時候需要注意的是? ?A -O B C 這個的邏輯是B與C 先相與,然后再進或的運算 如果需要A和B 或
運算之后再進行C操作,需要將A和B用括號括起來,且括號應(yīng)該轉(zhuǎn)義
過濾機制:
-path ?“/path/to/directory” ?-a ?-prune
查找的時候排除目錄中的某一個子目錄
find實例運用:
(1) 查找/etc目錄下面,不是以.conf結(jié)尾的文件
find ?/etc ?-not ?-name ?“*.conf”
find ?/etc ?! ?-name ?“*.conf”
(2)尋找/home目錄下,既不是用戶joe? 也不是用戶 jane的文件
find ?/home ?-not ?-user ?joe ? -a ?-not ? -user ?jane
find? /home -not \( -user joe -o -user jane \) ? # 括號里面的內(nèi)容不能緊貼括號,要有空格
括號需要轉(zhuǎn)義
(3)找出/tmp目錄下面,屬主不是root,且文件名不以f開頭的文件
find ?/tmp ?-not ?\( -user ? root ? -o ? -name “f*” \) ?-ls
find? /tmp ?\( -not -user root -a? -not? -name? “f*” \) ? -ls ?#注意括號,盡量使用括號括起來
(4)搜索/etc下面除了/etc/sane.d 目錄下的所有的以.conf結(jié)尾的文件
find ?/etc ? -path “/etc/sane.d” ? -a ? -prune ? -o ?-name ?“*.conf” ? -print
(5)搜索/etc下面除了/etc/sane.d 目錄和/etc/modprobe.d以外其他目錄下的所有的以.conf結(jié)尾的文件
find ?/etc ?\( ?-path ?“/etc/sane.d” ?-o ?-path ?“/etc/modprobe” ?\) ? -a ?-prune ? -o ? -name ?“*.conf”
(6)備份配置文件,添加.orig擴展名
find ?/etc ? -name ?“*.conf” ?-exec ?cp {} ? {}.orig ? \;
(7)在家目錄下面尋找可以被其他用戶寫入的文件,去除寫的權(quán)限
find ?/hone ? -perm ?-002 ?-exec chmod o-x {} ?\;
原創(chuàng)文章,作者:Double f,如若轉(zhuǎn)載,請注明出處:http://www.178linux.com/75016
總結(jié)
以上是生活随笔為你收集整理的linux搜索日志组合条件,find查找的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: puppet安装
- 下一篇: 初学Android之飞机大战——飞机大战