一天一條Linux指令 find

2021-07-14 05:23:39 字數 3569 閱讀 4747

前言:我們為什麼要學會使用find命令?

每一種作業系統都有成千上萬的檔案組成,對於linux這樣「一切皆檔案」的作業系統來說更不例外,大家應該都能很輕鬆使用windows下的檔案查詢功能,但是對linux這一功能可能並不是很熟悉,其實想玩linux的你更要牢牢掌握這個命令,因為linux不像windows那樣有固定的檔名字尾,並且因為linux陣營下百家爭鳴的特性,乙個相同的檔案在不同的發行版,可能會有不同,所以如果你能牢牢掌握find命令的使用,你在摸索linux的道路上將會順利很多,同時你會發現linux下檔案查詢功能其實很簡單,而且要比windows下查詢功能強大很多很多!好,下面進入正題

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來對查詢到的檔案進一步操作

以上就是關於find的使用方法,排版有點失敗,

一天一條Linux指令 cd

嵌入式開發需要不斷積累linux相關知識,所以在此天天不厭其煩 日積月累。cd change directory 命令是linux中最常用命令之一,我覺得另乙個應該是ls 後續介紹 主要功能是跳轉到cd命令指定目錄。cd命令格式 cd l p dir 常用cd命令 1.跳轉到指定目錄 cd dir ...

一天一條Linux指令 apt

由於昨天去assem公司除錯電路,接觸linux下依賴包的安裝大牛,遂整理了一下apt命令。apt get命令本身並不具有管理軟體包功能,只是提供了乙個軟體包管理的命令列平台。在這個平台上使用更豐富的子命令,完成具體的管理任務。apt get命令的一般語法格式為 apt get subcommand...

一天一條Linux指令 ln

linux中核心會為檔案分配inode節點,而硬鏈結和軟鏈結的一大不同就是是否重新分配inode,這裡我們就來做乙個linux中檔案與目錄對應的硬鏈結與軟鏈結方式總結,需要的朋友可以參考下 硬鏈結 新建的檔案是已經存在的檔案的乙個別名,當原檔案刪除時,新建的檔案仍然可以使用。硬鏈結特徵 1 擁有相同...