find命令詳解

2021-10-12 04:21:08 字數 4147 閱讀 6665

動作補充

原理;​ 在linux中,每天的12:00會將系統中的全部的檔名和檔案的路徑記錄到資料庫中

​ 在查詢檔案的時候,會直接掃瞄資料庫,來找檔案的位置

缺點:​ 準確度不足

​ 功能單一

優點:​ 查詢速度非常快

原理:​ 在linux中逐一比對檔案,檢查是否是要匹配的檔案

優點:​ 非常精確

​ 功能強大

缺點:​ 慢

find命令的格式

find [路徑] [匹配模式] [動作]
路徑
/             表示整個檔案系統(整個計算機中查詢)

./ 表示在當前目錄下進行查詢(也會查詢當前位置下的子目錄中的檔案)

/path/to/dir 表示查詢指定目錄和目錄中的子目錄的中檔案

匹配模式

1)根據檔名查詢

-name  檔名  >>> 檔名嚴格區分大小寫

-iname 檔名 >>> 檔名忽略大小寫

例子:在檔案系統中找出檔案a.txt

# find / -name a.txt

例子:在/home和/home的子目錄中找出檔名中包含字母a的檔案

# find /home -name *a*

例子:在/home和/home的子目錄中找出檔名中以字母a結尾的檔案

# find /home -name *a

例子:在/home和/home的子目錄中找出檔名中以字母a開頭的檔案

# find /home -name a*

例子:在當前位置下找出檔案的第二個字母是a的檔案

# find ./ -name "?a*"

例子:在當前位置下找出檔案的第乙個字母是a,倒數第三個字母是b的檔案

# find ./ -name "a*b??"

注意

檔名可以是乙個具體的名稱,也可以是萬用字元

*:表示任意長度的任意字元

?:表示一位長度的任意字元

2)根據檔案屬主的名字或者uid進行查詢

-user 使用者名稱

-uid uid

【如果使用者被刪除,查詢使用者遺留下來的檔案,只能用uid進行查詢】

例子:在home下查詢屬主為laowantong的檔案

# find /home/ -user "laowantong"

例子::在home下查詢屬主id為780的檔案

# find /home/ -uid "780"

3)根據檔案屬組的名字或者gid進行查詢
-group 屬組名

-gid gid

4)查詢沒有屬主的檔案
-nouser

例子:在系統中找出沒有屬主的檔案

# find / -nouser

5)查詢沒有屬組的檔案
-nogroup

例子:在檔案系統中找出沒有屬組的檔案

# find / -nogroup

6)根據檔案的型別進行查詢
-type 檔案型別

檔案的型別

d 目錄

f 普通檔案

s 鏈結檔案

b 塊裝置問價【硬碟】

c 字元裝置檔案【鍵盤】

p 管道檔案

l 鏈結檔案

例子:在/home下找檔案型別為目錄的檔案

# find /home/ -type d

例子:在根下找檔案型別一般檔案的檔案

# find /home/ -type f

7)根據檔案的大小進行查詢
-size 大小值

說明:如果省略單位,則預設單位是位元組

+表示大於指定值的檔案

-小於指定值得檔案

例子:在home下找出檔案大小為1k的檔案

# find /home -size 1k

說明:會將檔案大小是0.xk~1k的檔案都找出來

例子:在home下找出檔案大小為3k的檔案

# find /home -size 3k

說明:會將檔案大小是2k~3k的檔案都找出來

例子:在home下找出檔案大小為1m的檔案

# find /home -size 1m

說明:會將檔案大小是0.xm~1m的檔案都找出來

例子:在home下找出檔案大小為3m的檔案

# find /home -size 3m

說明:會將檔案大小是2.xm~3m的檔案都找出來

例子:在home下找出檔案大小為1g的檔案

# find /home -size 1g

說明:會將檔案大小是0.xg~1g的檔案都找出來

例子:在/home下找出檔案大小小於35k的檔案

# find /home/* -size "-35k

8)組合條件查詢
-a:   且   and  &&

-o: 或 or ||

-not: 非 !

例子:從home下,找出檔案的型別不是目錄的檔案

# find /home -not -type d

例子:從home下,找出檔案的型別不是目錄的檔案

# find /home -not -type d -a -not -type s

or# find /home -not \( -type d -o -type s \)【find 的() 需要轉義】

例子:從home下找出檔案型別是一般檔案,且檔名包含字母a,而且檔案大小大於1k

# find /home -type f -a -name "*a*" -a -size "+1k"

9)根據檔案的時間戳(天)進行查詢
-mtime [+|-]n(單位:天)  最近一次的內容修改時間

-ctime [+|-]n(單位:天) 最近一次的屬性修改時間

-atime [+|-]n(單位:天) 最近一次的訪問時間

說明: 1. 無符號:指定乙個具體的那一天

2. + 號:指定時間之前的所有時間

3. - 號:指定之間到當前時間這段時間內

10)根據檔案的時間戳(分)進行查詢
-cmin [+|-] n (單位:分)

-amin [+|-] n (單位:分)

-mmin [+|-] n (單位:分)

例子:在根下,找出5分鐘之內訪問過的檔案

# find / -atime -5

例子:在根下。找出5分鐘內沒有訪問過的檔案

# find / -atime +5

11)根據檔案的許可權進行查詢
方式1:-perm  許可權(精確查詢)

方式2:-perm /許可權(模糊查詢) 9位許可權中,只要有一位匹配成功,就可以

方式3:-perm -許可權(模糊查詢) 檔案的許可權必須包含指定的9個許可權位

例子:在根下,找出許可權為700的檔案

# find / -perm 700

例子:在根下,找出檔案許可權屬主有任意許可權的檔案

# find / -perm /700

例子:在跟下,找出檔案許可權屬主有寫許可權、執行許可權至少乙個許可權檔案

# find / -perm /300

例子:在根下,找出檔案至少一類使用者有寫許可權的檔案

# find / -perm /222

例子:在根下,找出所有使用者都執行許可權的檔案

#find / -perm 111

12)使用正則進行匹配
find -regex "pattern"【pattern匹配整個檔案路徑字串,而不僅僅是檔案的名稱】
動作

{} ——代表找到的檔案

\ —— 代表轉義

補充find之ctime、atime、mtime詳解

結合find清空檔案

for i in `find  -name "*.log"`; do cat /dev/null >$i; done

或for i in `find /path/to/file -name "*.log"`; do echo "" >$i; done

find命令詳解

2009 07 30 17 20 34 閱讀255 字型大小 大 中小訂閱 find命令 一 原理 功能 在目錄結構中搜尋檔案,並執行指定的操作。此命令提供了相當多的查詢條件,功能很強大。語法 find 起始目錄 尋找條件 操作 1 查詢目錄 find home type d name quejin...

find命令詳解

linux下的find命令的查詢功能十分強大,下面詳細介紹find的大多數用法 工作方式 沿著檔案層次結構向下遍歷,匹配符合條件的檔案,並執行相應的操作。1.根據檔案時間搜尋 atime access time,訪問時間 即上次訪問這個檔案的時間 mtime modification time,修改...

find命令詳解

1 列出當前某個目錄的檔案和目錄 find 2 匹配所有以.txt結尾的檔名 find home root name txt print 3 多個條件 find name txt o name pdf print find regex py sh 4 否定引數 find name txt print...