文件查找——藏的在深也沒用

locate

依賴與事先構建好的數據庫查找

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

         手動更新數據庫(updatedb)

工作特性

         查找數度快

         模糊查找

         非實時查找

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

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

locate [OPTION]… PATTERN…

          -b:只匹配路徑中的基名符合pattern的

         -c:統計共出現多少個符合查找條件的,而不是顯示文件

         -r:支持使用基本正則表達式BRE

注意:數據庫構建過程需要遍歷整個根文件系統,極消耗資源


find

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

工作特性:

           查找速度快

         精確查找

         實時查找

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

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

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

         查找條件:指定查找的標準,比如文件名,大小,屬主,屬組,權限等等,默認是指定路徑下所有文件

         處理動作:找到符合查找條件的文件后的操作,比如刪除,默認為輸出只標準輸出

查找條件:

         1.根據文件名查找:

                   -name "patter" :精確查找符合patter的文件,要模糊查找可以使用通配符

                 -iname "patter" :忽略大小寫

                          支持glob風格的通配符

                 -inum n :按inode查找

                 -links n :查找鏈接數為n的文件

                 -samefile name :相同inode號的文件

                 -regex "patter" :基于正則表達式,以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名稱

        

         2.根據文件從屬關系查找:

                  -user USERNAME :查找指定USERNAME的所有文件

                 -group GROUPNAME :查找指定GROUPNAME的所有文件

                 -nouser :查找沒有USERNAME的所有文件

                 -nogroup :查找沒有GROUPNAME的所有文件

                 -uid UID :查找指定UID的所有文件

                 -gid GID :查找指定GID的所有文件

        

         3.根據文件的類型查找:

                 -type TYPE:

                 f:普通文件

                 d:目錄文件

                 b:塊設備

                 c:字符設備

                 l:符號鏈接文件

                 S:套接字文件

                 p:管道文件

        

         4.組合測試:

                  與:-a  find命令的默認邏輯

                 或:-o 

                 非:-not,!

                

                 重要公式:(德摩根定律)

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

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

         !A-oB.png!A-aB.png


練習:找出/tmp目錄下屬主為非root的所有文件

find /tmp ! -user root

找出/tmp目錄下文件中不包括fstab字符串的文件

find /tmp ! -name "*fstab*"

找出/tmp目錄下屬組不是root,而且文件名不包括fstab字符串的文件

find /tmp -not \( -user root -o -name "*fstab*" \)
find /tmp -not -user root -a -not -name "*fstab*"

         5.根據文件大小查找:

                  -size [+|-]#UNIT

                 常用單位:k,M,G

                         #UNIT:(#-1,#]

                         +#UNIT:(#,oo)

                         -#UNIT:[0,#)

         size.png

        

         6.根據時間戳查找:

                   以“天”為單位:

                 -atime [+|-]#

                         #:(#-1,#]  :過去的實際#為負數的

                         +#:(#,oo)

                         -#:[0,#)

                 -mtime

                 -ctime

        atime.png

         以“分鐘”為單位

                  -amin

                 -mmin

                 -tmin

        

         7.根據文件的權限查找:

                  -perm [/|-]mode

                         mode:精確權限匹配

                         /mode:文件的任何一類用戶(u.g.o)的任何權限中的任何以為(r.w.x)符合條件即滿足,9位權限之間存在“或”關系

                         -mode:文件的每一類用戶(u.g.o)的權限中的名義為同時滿足(符合)添加才能匹配,9位權限之間存在“與”關系

                         mode權限中沒給的權限,其文件位權限可有可無

        

                 例如:

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

                 find -perm +222 只要當任意人有寫權限才會匹配

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

        

         處理動作:

                  -print:輸出至標準輸出,默認的動作

                 -ls:類似與對查找到的文件執行了“ls -l”命令

                 -delete:刪除查找到的文件

                 -fls /path/to/somefile:把查找到的文件以長格式的信息保存至指定的文件中

                 -ok COMMAND {}\; :對查找到的每個文件執行由COMMAND指定的命令,每次操作由用戶進行確認

                 -exec COMMAND {}\; :對查找到的每個文件執行由COMMAND指定的命令,不與用戶交互

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

          注意:請小心使用-exec命令,該命令不與用戶交互,如果find找到的內容與需求不匹配,-exec 后跟chmod/rm等等其他操作會帶來不可避免的損失

        注意:find 傳遞查找到的文件至后面指定的命令時,先查找到所有符合條件的文件,并一次性傳遞給后面的命令;有些命令不能接受過多的參數,此時命令執行可能會失敗,另一中方法可規避此問題

        find | xargs COMMAND

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

find /var -user root -user mail -type f

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

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

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

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

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

find / -nouser -nogroup -atime -7 -type f

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

find /etc -size +1M -type f

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

find /etc -not -perm 222 -type f

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

find /etc -not -perm 111 -type f

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

find /etc/init.d/ -perm 113 -type f

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

(0)
megedugaomegedugao
上一篇 2016-08-15
下一篇 2016-08-15

相關推薦

  • 第六周作業

    請詳細總結vim編輯器的使用并完成以下練習題 vim總結:     模式:編輯模式                 插入模式                 末行模式  …

    Linux干貨 2017-02-06
  • Linux簡述

    計算機誕生                                                  …

    2017-03-18
  • Nginx+Keepalived實現站點高可用

    Nginx+Keepalived實現站點高可用 vrrp 虛擬路由冗余協議(Virtual Router Redundancy Protocol,簡稱VRRP)是由IETF提出的解決局域網中配置靜態網關出現單點失效現象的路由協議,1998年已推出正式的RFC2338協議標準。VRRP廣泛應用在邊緣網絡中,它的設計目標是支持特定情況下IP數據流量失敗轉移不會引…

    Linux干貨 2016-11-07
  • Systemd服務

    POST –> Boot Sequence –> Bootloader –> kernel + initramfs(initrd) –> rootfs –> /sbin/initinit:CentOS 5: SysV initCentOS 6: UpstartCentO…

    Linux干貨 2015-03-02
  • shell腳本編程2

    八、條件選擇if語句     注:if語句可嵌套     單分支         if 判斷條件;then        &nbs…

    Linux干貨 2016-08-22
  • 從“黑掉Github”學Web安全開發

    Egor Homakov(Twitter: @homakov 個人網站: EgorHomakov.com)是一個Web安全的布道士,他這兩天把github給黑了,并給github報了5個安全方面的bug,他在他的這篇blog——《How I hacked Github again》(墻)說明了這5個安全bug以及他把github…

    Linux干貨 2016-08-15

評論列表(1條)

  • 馬哥教育
    馬哥教育 2016-08-19 10:20

    文章架構清晰,層次分明,對常用選項有的放矢,希望下來能多加練習,熟練掌握。

欧美性久久久久