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
下一篇 2017-05-08

相關推薦

  • linux路由轉發(軟路由)實驗

        一。實驗網絡拓撲             (R1,R2由 Linux 虛擬機添加雙網卡做軟路由實現)              &n…

    Linux干貨 2016-09-05
  • 文本編輯器sed和vim的用法集錦

    8月8號,主要學習內容為: 一、文本處理工具sed 二、vim編輯器 一、文本處理工具sed 1)簡介    sed是一種流編輯器,它一次處理一行內容。處理時,把 當前處理的行存儲在臨時緩沖區中,稱為“模式空間”( pattern space),接著用sed命令處理緩沖區中的內容 ,處理完成后,把緩沖區的內容送往屏幕。接著處理下…

    Linux干貨 2016-08-12
  • 如何實現在命令行輸入pwd時顯示出ifconfig的效果

    1、使用type ifconfig 查看   2、使用type pwd 查看 如果還沒有使用過pwd則顯示如下,表示pwd屬于內部命令,然后輸入enable -n pwd 禁用這個內部命令   如果已經使用過,就會顯示hash,已經緩存過   此時就不僅需要禁用內部命令,還需要使用hash -d pwd 清除pwd的緩存,使其在…

    2017-07-13
  • linux —————-目錄配配置【FHS】

    linux 目錄配配置【FHS】 /根目錄的意義與內容 根目錄是整個系統最重要的一個目錄;根目錄與開機、還原、系統修復等操作有關 FHS建議標準: 根目錄所在的分區應該越小越好,且應用程序所安裝的軟件最好不要與根目錄放在同一個分區內,保持根目錄越小越好 FHS定義的目錄含義 /bin :系統存放執行文件的目錄,但是bin比較特殊【bin放置的是在單用戶維護?!?/p>

    Linux干貨 2017-04-17
  • HA Cluste 的配置:keepalived:vrrp協議 雙主模型

    keepalived:vrrp協議 雙主模型 第一步配置出始環境: 準備兩節點: 主節點:172.18.57.7 long1 備節點:172.18.57.8 long2 (1) 各節點時間必須同步; 同步時間: ~]# yum -y install chrony ~]# vim /etc/chrony.conf ~]# systemctl start chr…

    Linux干貨 2017-05-15
  • Web緩存核心技術點需知

    Edit Web緩存核心技術點需知 5.1 HTTP首部控制 5.2 基于新鮮度檢測機制: 2.1 特征1:時間局部性 2.2 特征2:空間局部性 2.3 緩存的優點 2.4 哪類數據應該被緩存 2.5 哪類數據可緩存但不應該被緩存 2.6 緩存命中率決定緩存有效性 2.7 緩存數據生命周期 2.8 緩存處理步驟 2.9 緩存和普通數據讀取的區別 1. 完整…

    Linux干貨 2016-11-14
欧美性久久久久