linux find命令的用法

2021-07-12 05:04:02 字數 3169 閱讀 8556

linux下查詢檔案的命令有兩個;locate 和find

首先說下locate,locate這個命令是對其生成的資料庫進行遍歷(生成資料庫的命令:updatedb),這一特性決定了用locate查詢檔案速度很快,但是locate命令只能對檔案進行模糊匹配,在精確度上來說差了點,簡單介紹下它的兩個選項:

#locate 

-i        //查詢檔案的時候不區分大小寫比如:locate  –i   passwd

-n       //只顯示查詢結果的前n行比如:locate  -n  5   passwd

下面重點說下find,find在不指定查詢目錄的情況下是對整個系統進行遍歷查詢

使用格式:find  [

指定查詢目錄

]  [查詢規則

]  [查詢完後執行的

action]

[指定查詢目錄]例如:

這裡要注意的是目錄之間要用空格分開

[查詢規則] 

(1)根據檔名查詢

#  -name 

//根據檔名查詢(精確查詢)

#  -iname       //根據檔名查詢,但是不區分大小寫

這裡另外介紹下檔名通配的知識 *

表示通配任意的字元

?表示通配任意的單個字元

[ ] 

表示通配括號裡面的任意乙個字元

(2),根據檔案所屬使用者和組來查詢檔案

#  -user//根據屬主來查詢檔案

#  -group        //根據屬組來查詢檔案

(3),根據uid 和gid來查詢使用者

#find  /tmp  -uid  500  //查詢uid是500 的檔案

#find  /tmp  -gid  1000 // 查詢gid是1000的檔案

(4),-a  and  -o  and  –not的使用

# -a 連線兩個不同的條件(兩個條件必須同時滿足)

# -o 連線兩個不同的條件(兩個條件滿足其一即可)

# -not 對條件取反的

(5),根據檔案時間戳的相關屬性來查詢檔案

我們可以使用stat

命令來檢視乙個檔案的時間資訊如下:

所以這裡atime,mtime,ctime就是分別對應的「最近一次訪問時間」「最近一次內容修改時間」「最近一次屬性修改時間」,這裡的atime的單位指的是「天」,amin的單位是分鐘  

#find  /tmp  –atime  +5           //表示查詢在五天內沒有訪問過的檔案

#find  /tmp  -atime  -5            //表示查詢在五天內訪問過的檔案

(6),根據檔案型別來查詢檔案

-type

f     // 普通檔案

d     //目錄檔案

l     //鏈結檔案

b     //塊裝置檔案

c     //字元裝置檔案

p     //管道檔案

s     //socket檔案

(7),根據大小來查詢檔案

-size

#find  /tmp  -size   2m           //查詢在/tmp 目錄下等於2m的檔案

#find  /tmp  -size  +2m           //查詢在/tmp 目錄下大於2m的檔案

#find  /tmp  -size  -2m           //查詢在/tmp 目錄下小於2m的檔案

(8),根據檔案許可權查詢檔案

-perm

#find  /tmp  -perm  755           //查詢在/tmp目錄下許可權是755的檔案

#find  /tmp  -perm  +222          //表示只要有一類使用者(屬主,屬組,其他)的匹配寫許可權就行

#find  /tmp  -perm  -222          //表示必須所有類別使用者都滿足有寫許可權

(9),-nouser  and  -nogroup

#find  /  -nogroup –a –nouser       //在整個系統中查詢既沒有屬主又沒有屬組的檔案(這樣的檔案通常是很危險的,作為系統工程師的我們應該及時清除掉)

[查詢完執行的action]

# -print                                 //預設情況下的動作

# -ls                                     //查詢到後用ls 顯示出來

# -ok  [commend]                //查詢後執行命令的時候詢問使用者是否要執行

# -exec [commend]              //查詢後執行命令的時候不詢問使用者,直接執行

這裡要注意{}的使用:替代查詢到的檔案

#find  /tmp  -atime  +30  –exec rm –rf  {}  \;#刪除查詢到的超過30天沒有訪問過檔案

我們也可以使用xargs來對查詢到的檔案進一步操作

linux find命令用法

find maxdept 1 name test.txt 查詢當前目錄下第一級目錄的test.txt檔案 type 指定檔案型別查詢 f 代表檔案 type f name txt 查詢 txt的檔案 mtime 時間 後面加時間表示多久以前修改的,加在最後 mtime 時間 代表幾天之內修改的 ex...

Linux find命令用法小結

find是個使用頻率比較高的命令。常常用它在系統特定目錄下,查詢具有某種特徵 名字體別屬主許可權等 的檔案。find命令的格式 find path options print exec ok path 要查詢的目錄路徑。表示 home目錄.表示當前目錄 表示根目錄 print 表示將結果輸出到標準輸...

Linux find命令用法小結

find是個使用頻率比較高的命令。常常用它在系統特定目錄下,查詢具有某種特徵 名字體別屬主許可權等 的檔案。find命令的格式 find path options print exec ok path 要查詢的目錄路徑。表示 home目錄 表示當前目錄 表示根目錄 print 表示將結果輸出到標準輸...