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傳遞查找到的文件路徑至后面的命令時,是先查找出所有符合條件的文件路徑,

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

另一個方式可規避此問題: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
下一篇 2016-08-18

相關推薦

  • 第二周作業

    一、Linux文件管理類命令     1、文件的復制、移動和刪除     1 2 3 4 5 6 7 8 9 10 11 12 13 14 15    A、cp  文件的復制        &nbsp…

    Linux干貨 2016-12-13
  • 初識linux

    Linux操作系統入門 Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基于POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟件、應用程序和網絡協議。它支持32位和64位硬件。Linux繼承了Unix以網絡為核心的設計思想,是一個性能穩定的多用戶網絡操作系統。 1991年的10月5日,Linux創…

    Linux干貨 2016-06-09
  • 第二十天 centos7的lamp簡單實現

    博客作業:CentOS 7 lamp, vhost1: pma.stuX.com, phpMyAdmin, 同時提供https服務; vhost2: wp.stuX.com, wordpress vhost3: dz.stuX.com, Discuz 環境說明: DNS是:192.168.100.7 vhosts(Centos7):192.168.100.1…

    Linux干貨 2016-06-18
  • GNU awk基礎

    awk介紹 awk:Aho, Weinberger, Kernighan,報告生成器,格式化文本輸出 有多種版本:New awk(nawk),GNU awk( gawk) gawk:模式掃描和處理語言 基本用法: awk [options] ‘program’ var=value file… awk [options] -f programfile var=…

    Linux干貨 2018-01-01
  • 推薦CentOS Linux下的分區及格式化工具

    簡介 伴隨著科技的飛速發展,越來越多的企業對于服務器的穩定要求越來越高,越來越多的企業開始采用linux系統來部署自己的服務,以求高效的穩定性,當然任何操作系統都需要一個最基本的基礎,那就是硬盤,及硬盤分區,今天來給大家推薦幾款CentOS Linux下的分區工具及如何查看分區環境,也會給大家來帶一些硬盤的基本知識 一、硬盤的接口類型 分區肯定是對硬盤進行分…

    2017-03-19
  • select case的用法-函數練習-20160819

    §·select  case的用法 *介紹select 循環與菜單 ◎語法 select  variable  in  list[ ] do 循環體命令 Done  ◎select 循環主要用于創建菜單,按數字順序排列的菜單項將顯示在標準錯誤上,并顯示PS3 提示符,等待用戶輸 入 ◎用戶…

    Linux干貨 2016-08-19

評論列表(1條)

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

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

欧美性久久久久