find命令用法及示例

文件查找

locate,find可是實現在文件系統上查找符合條件的文件

實現工具:locate,find

locate有幾下幾個特性

1、依賴于事先構建好的索引庫;

2、系統自動實現;(周期性任務)

3、手動更新數據庫(updatedb) 
/var/lib/mlocate/mlocate.db

工作特性: 查找速度快; 模糊查找; 非實時查找

locate命令用法

locate - find files by name

locate [OPTION]... PATTERN...

-b:只匹配路徑中的基名;

-c:統計出共有多少個符合條件的文件

-i執行區分大小寫的搜索

-r:BRE

find命令:

實時查找工具,通過遍歷指定起始路徑下文件系統層級結構完成文件查找

查找速度略慢、精確查找、實時查找

find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]

查找起始路徑:指定具體搜索目標起始路徑;默認為當前目錄

查找條件:指定的查找標準,根據文件名,大小,類型,從屬關系,權限等等標準進行, 默認為找出指定路徑下的所有文件

處理動作:對符合查找條件的文件做出的操作,例如刪除等操作,默認為輸出至標準輸出

查找條件: 表達式:選項和測試

測試:結果通常為布爾型(true ,false)

根據文件名查找:
-name "pattern"
-iname "pattern"
支持glob風格的通配符
*  ?   []   [^]
-regex pattern:基于正則表達式模式查找文件,匹配是整個路徑,而非其名

根據文件從屬關系查找
-user UESRNAME
-group GRPANME:查找屬組指定組
-uid:查找屬主指定的UID的所有文件
-gid:查找屬組指定的GID的所有文件
-nouser:查找沒有屬主的文件
-nogroup:查找沒有屬組的文件
-inum n 按inode號查找
-somefile name 相同inode號的文件
-links n 鏈接數為n的文件

根據文件的類型查找
-type TYPEP:
f:普通文件
d:目錄文件
l:符號鏈接文件
b:塊設備文件
c:字符設備文件
p:管道文件
s:套接字文件

組合測試:
與:-a,默認組合邏輯
或:-o
非:-not   !  


!A -a !B  =  !(A -O B)
!A  -o  ! B  =   ! (A -a B)


根據文件大小查找:
    -size [+][-]#UNIT
    #UNIT:(#-1,#]
    -#UNIT:[0,#-1]
    +#UNIT:(#,oo)
根據時間戳查找:
以"天"為單位
    -atime [+|-]#
     #:[#,#-1)
    -#:(#,0]
      +#:(oo,#-1]
    -mtime
    -ctime
以"分鐘"為單位
    -amin
    -mmin
    -cmin

根據權限查找:
-perm [/ | -]mode
mode:精確權限匹配
/mode:任何一類用戶的權限中的任何一位符合條件即滿足:
Any  of  the  permission  bits  mode are set for the file
9位權限之間存在"或"關系:
[root@centos7 sixijie]$ find /tmp/sixijie -perm /001 -ls
[root@centos7 sixijie]$ find /tmp/sixijie -perm /002 -ls

-mode:每一類用戶的權限中的每一位同時符合條件即滿足;
All of the permission bits mode are set for the file
所有用戶都有寫權限  <-->  至少有一類用戶沒有寫權限


處理動作:
    -print:輸出至標準輸出:默認的動作
    -ls:類似于對查找到的文件執行 "ls -l" 命令,輸出文件的詳細信息:
    -delete:刪除查找到的文件
    -fls   /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息,保存至指定文件中;
    -ok COMMAND {} \;:對查找到的每個文件執行由COMMAND表示的命令:
每次操作都由用戶確認
       -ok  chown  root root {} \;     {} 占位符,表示找到的文件

-exec COMMADN {} \;:對查找f到的每個文件執行由COMMAND表示的命令:
-exec mv {} {}.danger \;          {} 占位符,表示找到的文件
每次操作都不需要用戶確認

注意:find傳遞查找到的文件路徑至后面的命令時,是先查找出所有符合條件的文件路徑,

并一次性傳遞給后面的命令;但是有些命令不能接受過長的參數,此時命令執行會失??;

另一個方式可規避此問題:find | xargs COMMAND

幾個簡單的練習加深下大家的印象

1、查找/var目錄下屬主為root,且屬組為mail的所有文件

[root@sixijie sh]# find /var/ -user root -group mail

2、查找/var目錄下不屬于root、lp、gdm的所有文件

[root@sixijie sh]# find /var/ ! \( -user root -o -user lp -o -user gdm \)

3、查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

[root@sixijie sh]# find /var/ -mtime -7 ! \( -user root -o -user postfix \) | wc -l

4、查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

find / \( -nouser -o -nogroup \)  -a -atime -7

5、查找/etc目錄下大于1M且類型為普通文件的所有文件

[root@sixijie sh]# find /etc/ -size +1M -type f

6、查找/etc目錄下所有用戶都沒有寫權限的文件

[root@sixijie sh]# find /etc/ ! -perm /222

7、查找/etc目錄下至少有一類用戶沒有執行權限的文件

find /etc/ ! -perm -111 -ls

8、查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件

find /etc/init.d/ -perm -113 -ls

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

(0)
sixijiesixijie
上一篇 2016-08-18 10:10
下一篇 2016-08-18 10:10

相關推薦

  • shell 編程(一)

    shell腳本編程:  編程語言的分類:根據運行方式    編程運行:源代碼->編譯器(編譯)--程序文件    解釋運行:源代碼-->運行啟動時解釋,由解釋器邊解釋運行; 根據其編程過程中功能的實現是調用庫還是調用外部的程序文件:  ?。螅瑁澹欤炷_本編程:      利用系統上的命令編程組件進行編程:   完整的編程:     利用庫或編程組件進行編程; …

    Linux干貨 2016-12-23
  • yum –rpm前端工具詳解

     1、yum 介紹        YUM: Yellowdog Update Modifier, rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定位軟件包,up2date的替代工具        &nbsp…

    Linux干貨 2016-08-24
  • 深入淺出Docker(一):Docker核心技術預覽

    原文鏈接:http://www.infoq.com/cn/articles/docker-core-technology-preview/ 【編者按】Docker是PaaS供應商dotCloud開源的一個基于LXC 的高級容器引擎,源代碼托管在 GitHub 上,基于Go語言開發并遵從Apache2.0協議開源。Docker提供了一種在安全、可重復的環境中自…

    2015-04-10
  • 軟件包管理

    一、軟件運行環境     API: Application Programming Interface         POSIX: Portable OS     程序源代碼 –>…

    Linux干貨 2016-08-22
  • Linux網絡屬性配置—ifcfg命令家族

    ifcfg命令家族:ifconfig,route,netstat 1、NAME               ifconfig – configure a network interface       SYNOPSIS   &n…

    Linux干貨 2016-11-27
  • Nginx 常見配置解析

    結構上: 核心模塊:HTTP模塊、EVENT模塊、MAIL模塊。 基礎模塊:HTTP access模塊、HTTP FastCGI模塊、HTTP Proxy模塊、HTTP Rewrite模塊。 第三方模塊:HTTP Upstream Request Hash模塊。 功能上: Handlers…

    Linux干貨 2016-12-05

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 14:00

    find命令在筆試中幾乎是必考的內容,只有多加練習,才能熟練掌握。

欧美性久久久久