linux的 find 命令詳解

2021-09-12 02:29:18 字數 2832 閱讀 7084

find命令:用來在給定的目錄下查詢符合給定條件的檔案

命令格式: find [options] [查詢起始路徑] [查詢條件] [處理動作]

-p、-l、-h:控制軟連線的對待方式,用的不多。不介紹了

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

1、根據名稱查詢

(1) -name 「patern」

(2) -iname 「patern」 :不區分名稱字母大小寫

(3)-regex pattern:基於正規表示式的模式查詢,匹配的是整個路徑,而非單個檔名。

2、根據檔案從屬關係查詢:

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

-group grpname:查詢屬組指定組的所有檔案;

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

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

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

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

3、根據檔案的型別查詢:

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

type

檔案型別

f普通檔案

d目錄檔案

l符號鏈結檔案

b塊裝置 檔案

c字元裝置檔案

p管道檔案

s套接字檔案

4、根據檔案的大小查詢:

-size [+|-]#unit

常用單位:k, m, g

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

+1k時:a和a1滿足大於1k(#)的條件;

-62k時:只有a3滿足大於等於0,小於等於 61k(#-1)的要求。

5、根據時間戳查詢:

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

以天為單位,

-atime [+|-]#

#:[#, #-1) :最後訪問時間在#天前(大於等於#天前,小於#-1天前)

等價於最後訪問時間與當前的時間差 大於 (#-1)*24小時,小於等於 #*24小時

-#:(#, 0] :最後訪問時間在#天以內,不包括24小時前的那一刻。

等價於最後訪問時間與當前的時間差小於 #*24小時

+#:(oo, #-1] :最後訪問時間在#-1天以前的。包括#-1天前

等價於最後訪問時間與當前的時間差大於等於 #*24小時

以「分鐘」為單位:-amin;-mmin;-cmin

-daystart:時間條件的開始先決條件。如果沒有的時候,比較的開始時間為當前時間。如果有此引數,則比較的開始時間為當天的23:59:59。

6、根據許可權查詢

-perm

-perm [/|-]mode

mode:精確許可權匹配;

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

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

舉例:(1):精確查詢。就是匹配許可權值完全相等的;

(2):/mode。 只要有一組使用者匹配到乙個許可權即可。

通俗說:就是屬主擁有給定屬主許可權的某乙個,或者陣列擁有給定許可權的某乙個,或者其他使用者擁有給定許可權的某乙個即可。

表示屬主擁有執行許可權 或者 陣列擁有寫許可權, 或者 其他使用者擁有寫許可權。

(3):-mode。並且的關係。

通俗說:就是給定的屬主許可權必須擁有。並且給定的陣列許可權必須擁有。並且給定的其他使用者許可權必須擁有。

表示屬主擁有執行許可權 並且 陣列擁有寫許可權, 並且 其他使用者擁有寫許可權。

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

-ls:類似於對查詢到的檔案執行「ls -l」命令,輸出檔案的詳細資訊;

-delete:刪除查詢到的檔案;

-fls /path/to/somefile:把查詢到的所有檔案的長格式資訊儲存至指定檔案中;

-ok command {} ; :對查詢到的每個檔案執行由command表示的命令;每次操作都由使用者進行確認;

-exec command {} ; :對查詢到的每個檔案執行由command表示的命令;

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

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

參考文件:

Linux 命令find詳解

find命令是用來在給定目錄下查詢符合條件的檔案 find 命令格式 find pathname options print exec pathname 表示find命令所查詢的檔案或目錄的路徑。例如 home print find命令將匹配的檔案輸出到標準輸出。exec find命令對匹配的檔案執...

linux命令 find詳解

linux中find命令常見用法示例 find path option print exec ok command print 將查詢到的檔案輸出到標準輸出 exec command 將查到的檔案執行command操作,和 之間有空格 ok 和 exec相同,只不過在操作前要詢使用者 name fi...

Linux命令 find命令詳解

find命令格式 find path option print exec ok xargs grep command 引數說明 path find命令所查詢的目錄路徑。表示 home目錄 來表示當前目錄 來表示系統根目錄。print find命令將匹配的檔案輸出到標準輸出。exec find命令對匹...