find查找

find查找是生產中最常見的日志查找工具
下面看看它的用法


基本用法:

find    查找路徑    查找標準    查找到以后的處理動作
查找路徑:需要被查找的文件所在的路徑,一定是個目錄,默認情況下為當前的目錄
查找的標準:查找的時候用什么方式去查找
處理動作:文件查找完畢后,需要對查找出來的文件進行處理的動作,默認情況下為顯示
查找深度的限制:
可以對查找中文件路徑的深度進行控制
-maxdepth  #
查找標準:
查找的標準一般包括以下的幾部分:
名字,時間,權限,類型,大小,屬主和屬組
名字:
-name “filename”     
基于文件名查找的時候支持通配符
*,?,[] ,  [^]
-iname    文件名匹配時不區分大小寫
-regex     基于正則匹配文件名正則來查找
類型:
-type   基于文件的類型查找
f    普通文件
d    目錄
s    套接字文件
l     鏈接文件
這里有個注意點 :
find 執行查找類型的時候是檢測文件本身的類型,比如A是鏈接文件A–>B,那么find判斷的是文件A的類型
與之相似的有一個叫 test 的命令,專用于檢測文件的類型,不過test檢測的時候是檢測B的類型
權限:
-perm  MODE
mode   全部權限吻合才行
/mode  給出的權限中只要滿足一個即可
-mode   文件權限包含時,即權限只能多,不能少
時間:
按時間來查找
-mtime    
-ctime
-atime
 [+|-]#
-mmin (分鐘計)
-cmin
-amin     
三種時間后面可以跟 + –  或者不加
+  代表的是超過
–   在…….的范圍內
不加為精確匹配
大?。?/b>
-size
利用大小查找的時候需要注意的是,大小的精確定位,+  和 – 的區別
查找10K的時候,是9-10K 的文件,而如果是  -10K   的話,  代表的是0-9K,  +10K代表的是10K以上
根據這個原理,查找1G的文件,千萬別寫成1G,因為這樣會將幾K的文件都列出來,正確的寫法是1024M
如果要精確到字節那么需要使用  c 為單位
屬主和屬組:
-uid n :n 為數字,這個數字是用戶的賬號 ID,亦即 UID ,這個 UID 是記錄在 /etc/passwd 里面與賬號名稱對應的數字。
-gid n :n 為數字,這個數字是組名的 ID
-user name :name 為使用者賬號名稱
-group name:name 為組名喔,例如 users ;
-nouser :尋找文件的擁有者不存在 /etc/passwd 的用戶
-nogroup :尋找文件的擁有群組不存在于 /etc/group 的文件
其中 -nouser  和  – nogroup 是可能存在的,比如你在網上下載了一個軟件,該軟件的擁有者并不再系統的用戶中,
或者事先已經有個賬戶,且在系統中運行產生了各種數據,后來你把用戶給刪除了,那么這些數據還在,此時就需要
用到上述兩個指令
執行動作
-print:顯示
-ls    類似ls  -l 的方式顯示文件
-ok  COMMAND  {}   \;  其中的{}是用來引用需要修改文件名
-exec COMMAND {}  \;  作用同 -ok  稍有區別的是-ok需要用戶每步都確認,而-exec不需要用戶的確認
多個條件之間的邏輯組合
-a  與關系,多個條件同時滿足的時候才滿足要求
-o  或關系,多個條件中一個條件滿足就行
!  not   :  非關系,即取反
德爾摩根定律:
(非P)或(非Q)=非(P且Q)
(非P)且(非Q)=非(P或Q)
使用-o條件時候需要注意的是   A -O B C 這個的邏輯是B與C 先相與,然后再進或的運算 如果需要A和B 或
運算之后再進行C操作,需要將A和B用括號括起來,且括號應該轉義
過濾機制:
-path  “/path/to/directory”  -a  -prune 
查找的時候排除目錄中的某一個子目錄
find實例運用:
(1) 查找/etc目錄下面,不是以.conf結尾的文件
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 \)   # 括號里面的內容不能緊貼括號,要有空格
括號需要轉義
(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結尾的文件
find  /etc   -path “/etc/sane.d”   -a   -prune   -o  -name  “*.conf”   -print  
(5)搜索/etc下面除了/etc/sane.d 目錄和/etc/modprobe.d以外其他目錄下的所有的以.conf結尾的文件
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)在家目錄下面尋找可以被其他用戶寫入的文件,去除寫的權限
find  /hone   -perm  -002  -exec chmod o-x {}  \;

原創文章,作者:Double f,如若轉載,請注明出處:http://www.www58058.com/75016

(0)
Double fDouble f
上一篇 2017-05-08 19:00
下一篇 2017-05-08 20:08

相關推薦

  • 8.1作業

    8月1日作業 創建testuser uid 1234,主組:bin,輔助組:root,ftp,shell:/bin/csh home:/testdir/testuser [root@localhost ~]# useradd -u 1234 -g bin -G root,ftp&…

    Linux干貨 2016-08-04
  • Linux基礎之shell腳本編程(三)

    1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現;   1 #!/bin/bash   2 #author:BaoZhang   3 #  …

    Linux干貨 2016-11-20
  • N25_第十周作業

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) POST –> BootSequence(BIOS) –>Bootloader(MBR) –>Kernel(ramdisk)–>rootfs(readonly)–>switchroot&#821…

    Linux干貨 2017-02-14
  • 在馬哥學習linux第一天的感受

         來馬哥教育好幾天了,昨天算是正式開始,在昨天早上,舉行了開班典禮,各位老師助教為我們介紹了在馬哥教育進行培訓的相關注意事項,下午進行了兩場測試,首先有一個摸底測試,不得不說我真的是太菜了,除了一些比較簡單的題目我還有些把握,相當一部分我都是似曾相識,但是也不是很確定,還有很大一部分我根本聽都沒聽說過,看到別人都寫的滿滿…

    Linux干貨 2017-07-11
  • 文件管理相關

     rename:對文件重命名     rename [options] expression replacement file        示例:          # rename -v cut.exe cut.exe3 cut.exe…

    Linux干貨 2017-02-25
  • RAID級別介紹

    raid分為軟raid和硬raid,一般公司使用硬raid,數據無價。 存數據都是先存到內存,后同步到硬盤,為提高raid卡的性能會在raid嵌入內存顆粒。 但是問題是斷電后內存的數據沒有同步到硬盤會丟失,這樣就會有raid卡電池。(raid卡必須有raid電池) 計算機只識別raid卡,不會識別raid卡下有幾塊硬盤 raid 0:  (條帶式)…

    Linux干貨 2016-03-22
欧美性久久久久