locate、find命令使用總結

一、簡介

   在linux系統中存在"一切皆文件"的說法,這就足以說明文件的重要性,因此查找文件也是我們必須要掌握的技能。這時候熟練使用locate、find命令也就顯得至關重要。尤其是find命令常用于日常工作中如安裝完某個軟件之后要查看這些軟件的安裝配置路徑,或是需要按指定條件直接查找我們需要操作的文件。因此更需要熟練掌握此命令。

二、用法詳解

locate:模糊查找命令,查找的是linux系統每天特點時間自動索引備份到系統數據庫中的文件。

優點:查找文件速度快

缺點:查找到的結果不是實時結果(必要時,可手動執行updatedb命令索引文件到數據庫,但是相當耗時。)

格式:locate [OPTION]… PATTERN…

屬于模糊非實時查詢,只要查詢路徑包含關鍵字即會顯示出查詢結果,效果如下圖:

blob.png

locate、find命令使用總結find:通過遍歷指定的目標目錄查找文件,可以根據文件名稱、日期、大小、權限進行文件實時查找

優點:查找到的結果保證是實時結果

缺點:查找速度不如locate快

格式:

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

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]

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

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

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

查找條件:

1、-name "文件名":支持使用globbing(*,?,[],[^]) 

例:按文件名查找命令為:find / -name "rpm",如下圖:

locate、find命令使用總結blob.png

2、-iname 不區分文件名大小寫

例:按文件名不區分大小寫查找命令為:find / -iname "rpm",如下圖:

locate、find命令使用總結blob.png

3、-user 根據屬主查找文件

例:按屬主查找文件命令為:find /tmp -user lxx,如下圖:

locate、find命令使用總結blob.png

4、-group 根據屬組查找文件

例:按屬主查找文件命令為:find /tmp -group lxx,如下圖:

locate、find命令使用總結blob.png

5、-uid 根據uid查找文件

例:按uid查找文件命令為:find /tmp -uid 502 -ls,如下圖:

locate、find命令使用總結blob.png

6、-gid 根據gid查找文件

例:按gid查找文件命令為:find /tmp -gid 502 -ls,如下圖:

locate、find命令使用總結blob.png

7、查找沒有屬主的文件

例:查找沒有屬主的文件命令為:find /tmp -nouser -ls,如下圖:

locate、find命令使用總結blob.png

8、查找沒有屬組的文件

例:查找沒有屬組的文件命令為:find /tmp -nogroup -ls,如下圖:

locate、find命令使用總結blob.png

9、組合查找條件

與(所有條件必須同時滿足,-a默認可省):-a 查找條件1 -a 查找條件2 -a …

或(滿足其中一個條件即可):-o 查找條件1 -o 查找條件2 -o …

非(不滿足指定條件的才可以): -not,! 

    -not 查找條件

注:-a優先級高于-o優先級

例:查找條件,包含centos文件并且沒有屬組的文件,命令為:

find /tmp/ -name "*centos*" -a -nogroup -ls 等價于 

find /tmp/ -name "*centos*" -nogroup -ls

如下圖:

locate、find命令使用總結blob.png

例:查找條件,包含centos文件并且沒有屬組的文件,命令為:

find /tmp/ -name "*centos*" -o -nogroup  (注意此處不能加-ls命令,會有問題),如下圖:

locate、find命令使用總結blob.png

例:查找條件,查找屬主不是root用的文件,命令為

find /tmp/ -not -user root -ls 或 find /tmp/ ! -user root -ls如下圖:

locate、find命令使用總結blob.png

find復雜邏輯處理公式:

非A 且 非B = 非(A或B)

非A 或 非B = 非(A且B)

例:find /tmp/ -not -name "*.txt" -a -not -name "*.out" 等價于 find /tmp/ -not \( -name "*.txt" -o -name "*.out" \)   

注:小括號因為比較特殊,所以此處需轉義

10、根據文件類型查找

命令格式:-type TYPE:根據文件類型查找

參數說明:

    -f:普通文件

    -d: 目錄文件

    -l: 符號鏈接文件

    -b: 塊設備文件

    -c: 字符設備文件

    -p: 命令名管道文件

    -s: 套接字文件

示例如下圖:

locate、find命令使用總結blob.png

11、根據文件大小查找

命令格式:-size[+|-]#UNIT:

常用單位:k,M,G

#UNIT: #-1 < x <= #   如1.1k,1.9k,2k等都算作2k文件

如下圖:

locate、find命令使用總結blob.pngblob.png

locate、find命令使用總結

-#UNIT:x <= #-1 如-2k:1k,0.9k等都符合條件,但是1.1k-1.9k就不符合條件

如下圖:

locate、find命令使用總結blob.png

+#UNIT:x > # 如+2k:2.1k,3.1k都符合條件,不包含2k本身。

如下圖:

locate、find命令使用總結blob.png

12、根據時間戳查找
 a.以為單位進行查找

    訪問時間:-atime:[+|-] 

     修改時間-mtime:[+|-]  

     改變時間:-ctime:[+|-]

     計算公式如下:

      #: # <= x <= #+1

     -#:x < # 

     +#:x >= #+1

例:查找3天前的文件(大于等于3并且小于4),如下圖:

locate、find命令使用總結blob.png

b.以分鐘為單位進行查找
   訪問時間:-amin:[+|-] 

   修改時間:-mmin:[+|-]  

   改變時間:-cmin:[+|-] 

例:查找5分鐘之內訪問過的文件,如下圖:

locate、find命令使用總結blob.png

13、根據權限查找

命令格式:-perm[+|-]MODE

          MODE:與MODE精確匹配,示例如下圖:

          blob.png

locate、find命令使用總結

         +MODE:任何一類用戶的權限只要能包含對其指定的任何一位權限即可,例如555(r-xr-xr-x)這種情況無論屬主屬主其他用戶只要擁有r或x任何一種權限即可匹配,示例如下圖:

locate、find命令使用總結blob.png

        

         -MODE:每一類用戶的權限都包含對其指定的所有權限即可,例如222(-w- -w- -w-)這種情況無論屬主屬主其他用戶必須都包含寫權限才能匹配,示例如下圖:

locate、find命令使用總結blob.png

14、處理動作

參數說明:

     -print:默認動作,打印至屏幕

     -ls:顯示找到的文件的詳細屬性

     -exec COMMAND {} \;    注:find配合-exec時如果要刪除文件,執行后不確認直接刪除(所有命令都不提醒)

     -ok COMMAND {} \;     注:find配合-ok時如果要刪除文件,執行后需確認后才會刪除(其他命令也會提醒)

-exec示例如下圖:

locate、find命令使用總結blob.png

注意:find命令會一次性找到所有符合條件的文件,并一同傳遞給后面的命令,但有些命令不能接受過長的參數。解決辦法:

find|xargs COMMAND,如下圖:

locate、find命令使用總結blob.png

補充:實現查找文件后給文件改名,如下圖:

參數說明:-i 選項告訴 xargs 用每項的名稱替換 {}

-t 選項指示 xargs 先打印命令,然后再執行(想詳細了解xargs命令執行過程可以加此參數)

locate、find命令使用總結blob.png

原創文章,作者:鏡花水月,如若轉載,請注明出處:http://www.www58058.com/7842

(0)
鏡花水月鏡花水月
上一篇 2015-08-28 17:36
下一篇 2015-08-31 10:21

相關推薦

  • 馬哥教育網絡班21期-第四周課程練習

    第四周作業 1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -a /etc/skel /home/tuse1   [root@localhost …

    Linux干貨 2016-07-17
  • find和grep命令練習

                                    find和grep命令練習 1、顯示當前系統上root,fedora,或user1用戶的默認shell; ~]# cat /etc/pa…

    Linux干貨 2016-10-23
  • centos啟動模式更改

    臨時更改   用單用戶的方法 系統開機 然后在等待界面是按esc 然后會進入這個界面,根據下面的提示進入 按a 會進入下面這個界面 在最后一行輸數字代表第幾模式   文件更改   centos6   系統啟動時會初始化init init 的配置文件是/etc/inittab文件 用vim /etc/inittab進入查…

    2017-07-22
  • net25-第12周作業

    1、請描述一次完整的http請求處理過程; – (1)客戶端發送http請求– (2)服務端建立或處理連接,接受請求或拒絕請求– (3)接受請求:接受客戶端對服務器某一資源的請求– (4)處理請求:對請求報文進行解析,獲取客戶端請求的資源及請求方法等相關信息– (5)訪問資源:獲取請求報文中請求的資…

    Linux干貨 2017-05-15
  • 網絡管理(二)之IP地址劃分子網、多塊網卡共用單一IP

    網絡管理(二)IP地址   一、認識學習IP地址的組成: 1、它們可唯一標識IP 網絡中的每臺設備 2、IP地址由兩部分組成: 網絡ID:標識網絡;每個網段分配一個網絡ID 主機ID:標識單個主機;由組織分配給各設備 3、點分十進制計法表示IPv4地址: 4、如下圖,將系統中的IP地址用二進制表示,再通過轉換合成的十進制數,使用ping命令可得出:…

    Linux干貨 2016-09-05
  • Linux Bash Shell有關變量

    bash 創建一個子bash-n 查看是否有錯誤-x 逐行顯示信息$:顯示當前PIDPPID :顯示父進程PIDSHLVL :顯示當前shell是幾級shellpstree 顯示進程樹-p 同時顯示進程號ps -ef 顯示進程信息 本地變量 :僅對當前SHELL有效,對子SHELL也無效環境變量:對當前SHELL及子SHELL均有效。 set 顯示本地變量和…

    2017-09-16
欧美性久久久久