Linux之查找命令find簡介

查找命令find簡介

 

 Linux使用過程中難免會遇到查找功能,類似于Windows中的搜索功能,如果想要找某個文件在什么地方,什么格式的文件等等。在Linux中我們可以使用findlocate、whichwhereis等命令。接下來我們就簡單說一下如何使用這幾個命令查找文件。

一、which

which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,并且返回第一個搜索結果。也就是說,使用which命令,就可以看到某個系統命令是否存在,以及執行的到底是哪一個位置的命令。

實例:1.png

二、Whereis

whereis命令只能用于程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。2.png

三、Locate

locate命令其實是"find -name"的另一種寫法,但是要比后者快得多,原因在于它不搜索具體目錄,而是搜索一個數據庫(/var/lib/mlocate/mlocate.db),這個數據庫中含有本地所有文件信息。Linux系統自動創建這個數據庫,并且每天自動更新一次,所以使用locate命令查不到最新變動過的文件。為了避免這種情況,可以在使用locate之前,先使用updatedb命令,手動更新數據庫。

實例:3.png

因為Locate命令必須在數據庫定時更新或者手動updatedb后才可以查找最近操作過的文件,且如果系統比較大則創建索引所需時間比較長,locate查找文件名時在路徑中包含也會被查找出來,查找結果模糊,所以我們在此不再多說,重點說一下find的用法。

四、find(重點)

find是最常見和最強大的查找命令,你可以用它找到任何你想找的文件。根據文件的各種屬性去找到相對應文件;支持實時查找,精準查找,精確匹配,缺點是速度較locate慢,但是功能強大,是我們日常最常使用的命令之一。

1find的基本用法

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

             查找路徑:默認為當前目錄

             查找條件:默認為指定路徑下的所有文件

             處理動作:默認為顯示至屏幕

2、查找條件:

      2.1 -name "文件名稱" :支持使用globbing字符;

                    *:任意長度的任意字符

                    ?:任意單個字符

                    []:指定范圍內的字符

                    [^]:指定范圍外的字符

      2.2 -iname "文件名稱" :查找時忽略大小寫,

      2.3 -user username :根據文件的屬主查找;

             例如:查找/var/目錄屬主為root且屬組為mail的所有文件4.png

      2.4 -group grpname :根據文件的屬組查找;find /home -user openstack –ls

      2.5 -nogroup 查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在

            -nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。5.png

      2.6  組合條件查找:

                   與: -a

                   :  -o

                   非; -not  !取反

      例如:查找/home/目錄下不屬于rootbin的并且是鏈接類型的文件6.png

      2.7  -type 查找某一類型的文件,如:

                    b – 塊設備文件

                    d – 目錄

                    c – 字符設備文件

                    p – 管道文件

                    l – 符號鏈接文件

                    f – 普通文件

                    s – socket文件

      2.8  根據文件的大小查找:size [+ | -]# UNIT

             UNIT單元可以為:K、MG

             find /var/log -size 2k      1<x<=2  的為2k

             #unit:  #-1 < x <= #  #表示查找的范圍為小于#且大于#-1單位內大小的文件

           -#unit:  x<=#-1           -#表示的其實是#-1范圍內的文件       如: -2k    1.1是不符合的,其實是x<=1k的文件

             +#unit: x>#               +#表示的是大于#號的文件          如:      +2k   2.1 2.4符合條件7.png

      2.9  根據時間戳查找:

             以天為單位:

             -[ atime |mtime |ctime ]    [+ | -]#

             +#:  x>= (#+1)            +#表示#+1天之前被訪問過的文件

             -# x< #             -#表示小于#天之內的訪問過的文件    例如: -2:最近一次訪問時間為在兩天之內

             #:  # <= x < #+1     #表示在##+1天之內訪問過的文件

             以分鐘為單位:同上

             -amin   -mmin   -cmin

             說明:Linux的文件有三個時間,分別是訪問時間、修改時間、狀態改動時間,分別對應的是atime(也就是access  time)、mtimemodify time)、ctimechange    time)。這  三個時間有所不同。

   atime:當文件的內容被訪問的時候,比如使用命令cat,這時候訪問時間會改變。

   mtime:當文件的內容被改變的時候,比如用vi編輯器編輯之后保存,這時候修改時間會被改變。

   ctime:當文件的屬性或者權限被改變的時候,這時候狀態改變時間會被改變。

   可以用stat  文件名來查看這三個時間。

   實例:查找/test目錄下最近一周內其內容修改過的,且不屬于rootbin的文件8.png

2.10  根據權限查找:-perm [+|-] mode

             mode mode 精確匹配

             +mode: 任何一類用戶的權限,只要能包含對其指定任何一位權限即可,以屬主為例;

             -mode: 每類用戶指定的檢查權限都匹配,為三類用戶所有指定的檢查權限都包含;9.png

2.11  處理動作:

             -print :默認處理動作,顯示

             -ls :

             -exec command {} \;      -exec find命令對匹配的文件執行該參數所給出的其他linux命令,注意{}\;之間的空格;

             -ok – exec的作用相同,只不過和會人交互而已,OK執行前會向你確認是不是要執行。10.png

2.12  find :一次性查找所有符合條件的所有文件,并一同傳遞給-exec-ok后面的指定的命令;但是有些命令不能接受過長的參數;此時使用另一種方式;

                           find | xargs command

例如:當我們去刪除比較多的文件是:比如本地目錄下的/media/rehat/Packages中的rpm包時,如果執行find ./ -name “*.rpm” | rm –rf 時,將不執行任何操作;11.png

以上find等查找命令的一些使用操作,實際使用過程中find使用頻率很高,遇到問題在與大家分享,如有不正之處,敬請指正?。?!謝謝。

 

原創文章,作者:wxdz_2004(古雨秋),如若轉載,請注明出處:http://www.www58058.com/4485

(1)
wxdz_2004(古雨秋)wxdz_2004(古雨秋)
上一篇 2015-05-18 17:45
下一篇 2015-05-18 17:47

相關推薦

  • 文件管理類的命令總結

    Linux系統內針對目錄的管理命令有很多,現在我們進行逐一介紹: 1. ?mkdir – make directories,創建目錄 語法:mkdir [OPTION]… DIRECTORY…常用選項: 選項 | 含義—— | ——-p, –parents | 遞…

    2017-09-07
  • 8月20日程序包管理

    程序包管理 概述    API:Application Program Interface應用編程接口    ABI:Application Binary Interface應用二進制接口    Unix-like,  …

    Linux干貨 2016-08-21
  • Linux上功能強大的文本編輯工具—vim

    vim–Vi Improved是一款全屏文本編輯器 vi: Visual Interface,文本編輯器 可見,vim是vi的升級版,所以我們當然要學習vim! vim的功能強大,自然命令、用法也會種類繁多,想要用的得心應手自然是需要長期的實際操作的,正所謂工欲善其事必先利其器,我們要想能夠在linux上從容應對繁多的文本編輯,無疑vim編輯器是…

    Linux干貨 2016-08-12
  • shell腳本中if與case使用,查找文件locate與find的使用,壓縮,解壓及歸檔工具

    shell腳本中if與case使用 查找文件locate與find的使用 壓縮,解壓及歸檔工具 執行的循序  順序執行  選擇執行  循環執行 條件語句if if只是一個有含義的詞,不能單獨作為指令使用。 單分支      if 條件判斷:then       &nbs…

    Linux干貨 2016-08-18
  • 網絡組Network Team

    網絡組Network Team 網絡組team:是將多個網卡聚合在一起,從而實現容錯和提高吞吐量 1 創建網絡組接口 nmcli connection add type team con-name TEAMname ifname INTname [config JSON] TEAMname 指定連接名,INname指定接口名, JSON指定runner方式,…

    Linux干貨 2017-05-07

評論列表(2條)

  • stanley
    stanley 2015-05-18 17:46

    東郭的標簽可以用極為專業來形容不過分

    • wxdz_2004(古雨秋)
      wxdz_2004(古雨秋) 2015-05-18 21:41

      @stanley是哪篇文章的標簽?

欧美性久久久久