文件查找

文件查找

簡介:在文件系統上查找符合條件的文件,就是文件查找。

  • 文件查找命令:locate, find

           非實時查找(數據庫查找):locate

           實時查找:find

  • 查詢系統上預建的文件索引數據庫 /var/lib/mlocate/mlocate.db

  • 依賴于事先構建的索引索引的構建是在系統較為空閑時自動進行(周期性任務),管理員手動更新數據庫(updatedb)

  • 索引構建過程需要遍歷整個根文件系統,極消耗資源

  • 工作特點:

            ? 查找速度快

            ? 模糊查找

            ? 非實時查找

            ? 搜索的是文件的全路徑,不僅僅是文件名

            ? 可能只搜索用戶具備讀取和執行權限的目錄

locate命令

locate KEYWORD

  • 有用的選項

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

    ? -n  N 只列舉前N個匹配項目

  • locate  sh

           ? 搜索名稱或路徑中帶有“sh”的文件  

如:

blob.png

  • locate  -r  ‘\.sh$’

            ? 使用Regex來搜索以“.sh”結尾的文件

如:

blob.png

find

  • 實時查找工具,通過遍歷指定路徑完成文件查找;

  • 工作特點:

        ? 查找速度略慢

        ? 精確查找

        ? 實時

  • find [OPTION]… [查找路徑] [查找條件] [處理動作]

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

    查找條件:指定的查找標準,可以文件名、大小、類型、 權限等標準進行;默認為找出指定路徑下的所有文件

    處理動作:對符合條件的文件做操作,默認輸出至屏幕

    查找條件

  • 根據文件名和inode查找:

        -name "文件名稱":支持使用文件通配符 *, ?, [], [^]

        -iname "文件名稱":不區分字母大小寫

        -inum n  按inode號查找

        -samefile name  相同inode號的文件

        -links n   鏈接數為n的文件

        -regex "PATTERN":以PATTERN匹配整個文件路徑字 符串,而不僅僅是文件名稱

  • 根據屬主、屬組查找:

        -user USERNAME:查找屬主為指定用戶(UID)的文件

        -group GRPNAME: 查找屬組為指定組(GID)的文件

        -uid UserID:查找屬主為指定的UID號的文件

        -gid GroupID:查找屬組為指定的GID號的文件

        -nouser:查找沒有屬主的文件

        -nogroup:查找沒有屬組的文件

  • 根據文件類型查找:

                      -type TYPE:

                    ? f: 普通文件

                    ? d: 目錄文件

                    ? l: 符號鏈接文件

                    ? s:套接字文件

                    ? b: 塊設備文件

                    ? c: 字符設備文件

                    ? p: 管道文件

組合條件:

    與:-a

    或:-o

    非:-not, !

德·摩根定律: 德·摩根首先發現了在命題邏輯中存在著下面這些關系:

        非(P 且 Q) = (非 P) 或 (非 Q)

        非(P 或 Q) = (非 P) 且 (非 Q)

德·摩根定律在數學邏輯的定理推演中,在計算機的邏輯設計中以及數學的集合運算中都起著重要的作用。

在文件查找中的應用如:

尋找文件系統中屬主不是root名字不以

find / \( -not -user root -a -not -name 'h*' \) -ls

blob.png

我們把根據德摩爾定律把not提取出來

find /  -not \( -user root -o -name 'h*' \) -ls

blob.png

如圖所示,這兩條命令的結果相同,所以這兩條命令是等價的。

  • 根據文件大小來查找:

        -size [+|-]#UNIT 常用單位:k, M, G

        #UNIT: (#-1, #] 如:6k 表示(5k,6k]

        -#UNIT:[0,#-1] 如:-6k 表示[0,5k]

        +#UNIT:(#,∞) 如:+6k 表示(6k,∞)

  • 根據時間戳:

   以“天”為單位;

        -atime [+|-]#,  

        #: [#,#+1)

        +#: [#+1,∞]

        -#: [0,#)

        -mtime [+|-]#,

        -ctime [+|-]#,

   以“分鐘”為單位:

        -amin [+|-]#,

        -mmin [+|-]#,

        -cmin [+|-]#,

  • 根據權限查找:

        -perm [/|-]MODE

        MODE: 精確權限匹配

如:blob.png

                      /MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可,或關系。

如:blob.png

                      -MODE:每一類對象都必須同時擁有指定權限,與關系0表示不關注

        ? find -perm 755 會匹配權限模式恰好是755的文件

        ? 只要當任意人有寫權限時,find -perm +222就會匹配

        ? 只有當每個人都有寫權限時,find -perm -222才會匹配

        ? 只有當其它人(other)有寫權限時,find -perm -002才會匹配

如:blob.png

  • 處理動作:

        1. -print:默認的處理動作,顯示至屏幕;

        2. -ls:類似于對查找到的文件執行“ls -l”命令

        3. -delete:刪除查找到的文件;

        4. -fls file:查找到的所有文件的長格式信息保存至指定文件中

        5. -ok COMMAND {} \;對查找到的每個文件執行由 COMMAND指定的命令;對于每個文件執行命令之前,都會交互式要求用戶確認

        6. -exec COMMAND {} \;對查找到的每個文件執行由 COMMAND指定的命令

        7. {}: 用于引用查找到的文件名稱自身

        8. find傳遞查找到的文件至后面指定的命令時,查找到所有符合條件的文件一次性傳遞給后面的命令

        9. 有些命令不能接受過多參數,此時命令執行可能會失敗,下面方式可規避此問題find|xargs COMMAND

一、實例:

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

find /var -user root -group mail

blob.png

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

find /var -not \( -user root -o -user lp -o -user gdm \)

blob.png

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

find /var -mtime -7 -a -not \( -user root -o -user postfix \)

blob.png

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

find / -nouser -nogroup -atime -7 -ls

blob.png

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

find /etc/ -size +1M -type f

blob.png

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

find /etc/ -perm /o=rw

blob.png

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

find /etc -not -perm -111 -ls

blob.png

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

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

blob.png

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

(0)
502795641502795641
上一篇 2016-08-18
下一篇 2016-08-18

相關推薦

  • mount中-o的選項利用

        Mount下—-o 選項的各項用處  mount-o 選項 sync,async 同步模式,異步模式(defaults)         此選項的默認模式為異步模式。在同步模式下,內存的任何修改都會實時的同步到硬盤當中,這種模式的…

    2017-08-19
  • Linux系統上的文件處理工具

    Linux系統上的文件處理工具 我們都知道在計算機中,存在大量的文件,這些文件中包含大量的信息??墒怯行r候,為了工作的效率,我們在茫茫信息中提取出我們所需要的信息,這樣的技能就顯得尤為重要。Linux系統上為我我們提供了多種多樣的文本處理工具,下面我們來簡單說一下。 查看文件內容我們可以使用less命令,cat命令,more命令等等 cat cat [OP…

    Linux干貨 2016-08-05
  • date 命令練習

    一、課外資料補充: 1.命令格式: date[參數]…[+格式] 2.命令功能: date可以用來顯示或設定系統的日期與時間。 3.命令參數: 必要參數: %H小時(以00-23來表示)。 %I小時(以01-12來表示)。 %K小時(以0-23來表示)。 %l小時(以0-12來表示)。 %M分鐘(以00-59來表示)。 %P AM或PM…

    Linux干貨 2016-08-05
  • linux進程管理相關工具

    linux進程管理相關工具: pstree ,ps ,pidof ,pgrep ,top ,htop ,glances ,pmap ,vmstat ,kill ,killall ,job ,bg ,fg ,nohup ,nice ,renice ,pkill…… 1、pstree:查看進程樹 2、ps:顯示執行命令時間的進程狀態信息 /proc 目錄下存放內…

    Linux干貨 2016-09-11
  • CentOS開發環境搭建

        一個月之前將系統換為Linux,昨天系統運行的時候突然死機,開機之后進不了系統,并且BIOS無法識別硬盤,無奈只有在普通硬盤上重裝系統。搭建開發環境,為了避免再次遇到類似現象,或在下次遇到這類問題快速搭建開發環境,記錄開發環境搭建的過程。 1、啟用wifi echo "blacklist&n…

    Linux干貨 2016-08-04
  • N21_第09周_shell腳本

    作業題目: 1、寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; 預置條件: [root@zhouyong148 N21_09]# cat /etc/passwd root:x:0:0:root:/root:/b…

    Linux干貨 2016-11-14

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 11:22

    文章對find命令的常見選項跟查找條件有了一個詳細的介紹,需要注意的是find的處理動作也是很重要的,希望課后能對find命令進行多加練習,達到熟練掌握。

欧美性久久久久