Linux下find指令的詳解

2021-08-20 06:34:35 字數 3218 閱讀 9327

我們都知道,linux下一切皆檔案,所以對於linux來說 find 是一條很重要的命令。linux下面的 find 指令用於在目錄結構中搜尋檔案,並執行指定的操作。它提供了相當多的查詢條件,功能比較強大。在不指定查詢目錄的情況下, find 會對整個系統進行遍歷。即使系統中含有網路檔案系統,find 命令在該檔案系統中同樣有效。在執行乙個非常消耗資源的 find 命令時,很多然都傾向於把它們放在後台執行,因為遍歷乙個大的檔案系統可能會花費很長的時間。

1.命令格式

find [查詢目錄] [查詢規則] [查詢完之後的操作]

2.命令功能

用於在檔案樹中查詢檔案,並做相應的處理,(有可能也會訪問磁碟)。

3.命令引數

pathname:表示所要查詢的目錄路徑,例如「.」表示當前目錄,「/」表示根目錄。

-print:將find找到的檔案輸出到標準輸出。

-exec:對找到的檔案執行exec這個引數所指定的shell命令,相應的形式為:-exec command {} \;將查詢到的檔案進行command操作,「{}」就代替查詢到的檔案,注意「{}」和「\」之間有乙個空格。

-ok:和-exec的作用相同,只不過-ok更加安全一點,在執行每乙個命令之前,大都會讓使用者確定是否執行。

1.根據檔名查詢

1.1.-name(根據檔名進行查詢,區分大小寫精確查詢)

1.2.-iname(根據檔名查詢,不區分大小寫)

1.3.檔名萬用字元:「*」表示統配任意的字元,可以是任何東西

1.4.「?」表示通配任意單個字元

1.5.「」表示通配括號裡面的任意乙個字元,注意裡面的內容會被解析成單個字元

2.根據檔案的時間戳資訊查詢檔案

在根據時間戳資訊查詢的時候,所有的 time 都是以「天」為單位,min 都是以分鐘為單位。 +n表示n以前,-n表示n以內。

2.1.以最近一次訪問的時間為引數

-atime:

find pathname -atime +n(表示n天前訪問過的檔案)

find pathname -atime -n(表示以當前時間為起點前n天記憶體取過的檔案)

-amin:

find pathname -amin +n(表示n分鐘前訪問過的檔案)

find pathname -amin -n(表示以當前時間為起點前n分鐘訪問過的檔案)

2.2.以最近一次修改的時間為引數

-mtime:

find pathname -mtime +n(表示n天前修改過的檔案)

find pathname -mtime -n(表示以當前時間為起點前n天前修改過的檔案)

-mmin:

find pathname -mmin +n(表示n分鐘前訪問過的檔案)

find pathname -mmin -n(表示以當前時間為起點前n分鐘訪問過的檔案)

2.3.以最近一次更改的時間為引數

-ctime:

find pathname -ctime +n(表示n天前更改過的檔案)

find pathname -ctime -n(表示以當前時間為起點前n天內更改過的檔案)

-cmin:

find pathname -cmin +n(表示n分鐘前更改過的檔案)

find pathname -cmin -n(表示以當前時間為起點前n分鐘內更改過的檔案)

3.根據檔案所屬使用者和所屬組來查詢檔案

3.1-user(根據檔案所有者查詢檔案)

3.2.-group(根據所有者所在的組查詢)

4.根據nouser 或 nogroup查詢

4.1.-nouser

(查詢無有效屬主的檔案)

find pathname -nouser

4.2.-nogroup(查詢無有效屬組的檔案)

find pathname -nogroup

5.-perm:根據許可權來查詢檔案

6.根據uid 和 gid 查詢檔案

6.1.-uid(根據檔案的uid查詢)

6.2.-gid(根據檔案所在組的gid查詢)

7.-type:根據檔案型別查詢檔案

7.1.f(表示普通檔案)

find pathname -type f

7.2.d(表示目錄檔案)

find pathname -type d

7.3.l(表示鏈結檔案)

find pathname -type l

7.4.b(表示塊裝置檔案)

find pathname -type b

7.5.c(表示字元裝置檔案)

find pathname -type c

7.6.p(表示管道裝置檔案)

find pathname -type p

7.7.s(表示套接字檔案)

find pathname -type s

8.-size:根據檔案大小查詢檔案

8.1.find pathname -size +n(表示大於n位元組的檔案)

8.2.find pathname -size -n(表示小於n位元組的檔案)

8.3.find pathname -size n(表示等於n位元組的檔案)

9.按照參照檔案的更改時間查詢

-newer:file1(查詢更改時間比file1的更改時間距離當前時間近的檔案)

10.maxdepth和mindepth

10.1.-maxdepth

-maxdepth n:搜尋深度距離當前目錄最多n個子目錄深度

10.2.-mindepth

-mindepth n:搜尋深度距離當前目錄至少n個子目錄深度

11.-empty:查詢路徑下為空的檔案或者資料夾

12.按照硬連線的數目進行查詢

12.1.-link n:硬連線連線數目等於n的檔案或者目錄

12.2.-link +n:硬連線連線數目大於n的檔案或者目錄

12.3.-link -n:硬連線連線數目小於n的檔案或者目錄

13.-a、-o、-not(也就是與、或、非)

13.1.-a:連線兩個不同的條件(兩個條件必須同時為真)

13.2.-o:連線兩個不同的條件,兩個條件只要有乙個滿足即可

13.3.-not:對條件進行取反

14.查詢完成之後的操作

14.1.-exec command {} \;(其中,「{}」就代表查詢之後返回的檔案)

14.2.-ok command {} \;(-ok相對於-exec而言更安全一點,會讓使用者確定所要執行的操作)

linux下的find指令

在linux下我們可以用到三個命令來查詢檔案,通常我們都是先使用whereis或者是locate來檢查,如果真的找不到了我們才以find來找。為什麼呢?因為whereis和locate是利用資料庫來查詢資料,所以相當快速,而且並沒有實際查詢硬碟,比較節省時間。但是find是直接查詢硬碟,如果你的硬碟...

Linux下的find指令

在linux 下我們可以用到三個命令來查詢檔案,通常使用whereis或者是locate來檢查,如果真的找不到了我們就以find來找。因為whereis和locate是利用 資料庫來查詢資料,所以相當快速,而且並沒有實際查詢硬碟,比較節省時間。但是find是直接查詢硬碟,如果你的硬碟比較老舊的話,就...

Linux下的指令 查詢指令 find

linux下find命令在目錄結構中搜尋檔案,並執行指定的操作。1.linux下find命令格式 find pathname options print exec ok 2.命令功能 用於在檔案樹中查詢檔案,並作出相應的處理 可能訪問磁碟 3.命令引數 pathname find命令所查詢的目錄路徑...