天天看點

【Linux】find指令的詳解一、OPTIONS參數二、查找路徑三、查找條件

find指令是用來在給定的目錄下查找符合給定條件的檔案

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

一、OPTIONS參數

    -P、-L、-H:控制軟連接配接的對待方式,用的不多。不介紹了

二、查找路徑

    就是個目錄路徑,相對和絕對都可以。

三、查找條件

1.根據名稱查找

-name “PATERN”

-iname “PATERN”:不區分名稱字母的大小寫

[[email protected] a]$ ls
abb.c  a.c  A.c  acc.cpp  a.txt  b1  c1
[[email protected] a]$ find ./ -name "a*"
./a.c
./abb.c
./acc.cpp
./a.txt
[[email protected] a]$ find ./ -iname "a*"
./a.c
./abb.c
./acc.cpp
./A.c
./a.txt
           

-regex PATTERN:基于正規表達式的模式查找,比對的是整個路徑,而非單個檔案名。

2.根據檔案從屬關系查找

-user USERNAME:查找屬主指定使用者的所有檔案;

-group GRPNAME:查找屬組指定組的所有檔案;

-uid UID:查找屬主指定的UID的所有檔案;

-gid GID:查找屬組指定的GID的所有檔案;

-nouser:查找沒有屬主的檔案;

-nogroup:查找沒有屬組的檔案;

3.根據檔案的類型查找

-type:根據不同的檔案類型篩選

f 普通檔案
d 目錄檔案
l 符号連結檔案
b 塊裝置 檔案
c 字元裝置檔案
p 管道檔案
s 套接字檔案

4.根據檔案的大小查找

-size [+|-]#UNIT

常用機關:k, M, G

            #UNIT:(#-1, #]

            -#UNIT:[0,#-1]

            +#UNIT:(#, oo)

【Linux】find指令的詳解一、OPTIONS參數二、查找路徑三、查找條件

1、1k時:a3隻有15個位元組,也被算做1k也查詢,即條件符合大于0k ( #-1 ),小于等于1k (#)

2、+1k時:a和a1滿足大于1k(#)的條件。

3、-62k時:隻有a3滿足大于等于0,小于等于 61k(#-1)的要求。

5.根據時間戳查找

按照atime(檔案的最後通路時間)、mtime(檔案的最後修改時間)、ctime(檔案最後改變時間)三個變量來查詢:

以天為機關,

          -atime [+|-]#
              #:[#, #-1) :最後通路時間在#天前(大于等于#天前,小于#-1天前)
                    等價于最後通路時間與目前的時間差 大于 (#-1)*24小時,小于等于 #*24小時
              -#:(#, 0] :最後通路時間在#天以内,不包括24小時前的那一刻。
                    等價于最後通路時間與目前的時間差小于 #*24小時
              +#:(oo, #-1] :最後通路時間在#-1天以前的。包括#-1天前
                    等價于最後通路時間與目前的時間差大于等于 #*24小時

                  -mtime

                  -ctime

【Linux】find指令的詳解一、OPTIONS參數二、查找路徑三、查找條件

6.根據權限查找

-perm

-perm [/|-]mode

  mode:精确權限比對;

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

  -mode:每一類使用者(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足。9位權限之間存在“與”關系;

檢視案例:

【Linux】find指令的詳解一、OPTIONS參數二、查找路徑三、查找條件

1):精确查找。就是比對權限值完全相等的;

【Linux】find指令的詳解一、OPTIONS參數二、查找路徑三、查找條件

2):/mode。 隻要有一組使用者比對到一個權限即可。

 通俗說:就是屬主擁有給定屬主權限的某一個,或者數組擁有給定權限的某一個,或者其他使用者擁有給定權限的某一個即可。

【Linux】find指令的詳解一、OPTIONS參數二、查找路徑三、查找條件

表示屬主擁有執行權限

或者數組擁有寫權限,

或者其他使用者擁有寫權限

 (3):-mode。并且的關系。

 通俗說:就是給定的屬主權限必須擁有。并且給定的數組權限必須擁有。并且給定的其他使用者權限必須擁有。

【Linux】find指令的詳解一、OPTIONS參數二、查找路徑三、查找條件

表示屬主擁有執行權限

并且數組擁有寫權限,

并且其他使用者擁有寫權限

處理動作:

          -print:輸出至标準輸出;預設的動作;

          -ls:類似于對查找到的檔案執行“ls -l”指令,輸出檔案的詳細資訊;

          -delete:删除查找到的檔案;

          -fls /PATH/TO/SOMEFILE:把查找到的所有檔案的長格式資訊儲存至指定檔案中;

          -ok COMMAND {} \; :對查找到的每個檔案執行由COMMAND表示的指令;每次操作都由使用者進行确認;

          -exec COMMAND {} \; :對查找到的每個檔案執行由COMMAND表示的指令;

        注意:find傳遞查找到的檔案路徑至後面的指令時,是先查找出所有符合條件的檔案路徑,并一次性傳遞給後面的指令;

            但是有些指令不能接受過長的參數,此時指令執行會失敗;另一種方式可規避此問題:

             find | xargs COMMAND

仿寫自:https://www.cnblogs.com/scrit/p/5854197.html

繼續閱讀