在 Linux 命令中,find用于在指定目錄下查找文件。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名,其支持按名稱查找、按正則表達式查找、按文件大小查找、按文件權(quán)限查找等多種查詢方式。如果在使用該命令時,不設(shè)置任何參數(shù),則find命令將在當(dāng)前目錄下查找子目錄與文件,并且將查找到的子目錄和文件全部進行顯示。
語法:find + 目標(biāo)目錄(路徑) + <選項> + 參數(shù)
常用選項列表
| 選項 | 含義 |
|---|---|
| -perm <權(quán)限數(shù)值> | 查找符合指定的權(quán)限數(shù)值的文件或目錄 |
| -type <文件類型> | 只尋找符合指定的文件類型的文件 |
| -name <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
| -expty | 尋找文件大小為 0 Byte 的文件,或目錄下沒有任何子目錄或文件的空目錄 |
| -ls | 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出 |
| -maxdepth <目錄層級> | 設(shè)置最大目錄層級 |
| -mindepth <目錄層級> | 設(shè)置最小目錄層級 |
| -exec <執(zhí)行指令> | 假設(shè)find指令的回傳值為true,就執(zhí)行該指令 |
| -ok <執(zhí)行指令> | 此參數(shù)的效果和指定-exec類似,但在執(zhí)行指令之前會先詢問用戶,若回答y或Y,則放棄執(zhí)行命令 |
示例
首先,給出演示使用的文件結(jié)構(gòu):

示例 1:查找當(dāng)前目錄及其子目錄下所有文件和文件夾
find .

示例 2:在/testLinux目錄下查找以.txt結(jié)尾的文件名
// 需要書寫完整的路徑find /tmp/cg/testLinux -name "*.txt"

示例 3:組合查找文件名以file1開頭(與、或、非)file2開頭的文件
/** * 組合查找語法: * -a 與(取交集) * -o 或(取并集) * -not 非(同 !) * ! 非(同 not) */find . -name "file1*" -a -name "file2*"find . -name "file1*" -o -name "file2*"find . -name "file1*" -not -name "file2*"find . -name "file1*" ! -name "file2*"

示例 4:根據(jù)文件類型進行搜索
/** * 查找當(dāng)前目錄及所有子目錄下的普通文件 */find . -type f

示例 5:基于目錄深度進行搜索
/** * 限制最大深度為 3 */find . -maxdepth 3 -type f/** * 限制最大深度為 2 */find . -maxdepth 2 -type f

示例 6:基于文件權(quán)限進行搜索
/** * 搜索權(quán)限為 777 的文件 */find . -type f -perm 777/** * 搜索 .txt 格式且權(quán)限不為 777 的文件 */find . -type f -name "*.txt" ! -perm 777

示例 7:借助-exec命令,將當(dāng)前目錄及子目錄下所有.txt格式的文件以File:文件名的形式打印出來
find . -type f -name "*.txt" -exec printf "File: %s/n" {} /; 
示例 8:借助-exec命令,將當(dāng)前目錄及子目錄下所有 3 天前的.txt格式的文件復(fù)制一份到old目錄
find . -type f -mtime +3 -name "*.txt" -exec cp {} old /; 
文件類型參數(shù)列表
| 文件類型參數(shù) | 含義 |
|---|---|
| f | 普通文件 |
| l | 符號連接 |
| d | 目錄 |
| c | 字符設(shè)備 |
| b | 塊設(shè)備 |
| s | 套接字 |
| p | Fifo |
文件大小單元列表
| 文件大小單元 | 含義 |
|---|---|
| b | 塊(512 字節(jié)) |
| c | 字節(jié) |
| w | 字(2 字節(jié)) |
| k | 千字節(jié) |
| M | 兆字節(jié) |
| G | 吉字節(jié) |
選項列表
| 選項 | 含義 |
|---|---|
| -amin <分鐘> | 查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算 |
| -atime <24小時數(shù)> | 查找在指定時間曾被存取過的文件或目錄,單位以 24 小時計算 |
| -cmin <分鐘> | 查找在指定時間之時被更改過的文件或目錄 |
| -ctime <24小時數(shù)> | 查找在指定時間之時被更改的文件或目錄,單位以 24 小時計算 |
| -anewer <參考文件或目錄> | 查找其存取時間較指定文件或目錄的存取時間更接近現(xiàn)在的文件或目錄 |
| -cnewer <參考文件或目錄> | 查找其更改時間較指定文件或目錄的更改時間更接近現(xiàn)在的文件或目錄 |
| -daystart | 從本日開始計算時間 |
| -depth | 從指定目錄下最深層的子目錄開始查找 |
| -expty | 尋找文件大小為 0 Byte 的文件,或目錄下沒有任何子目錄或文件的空目錄 |
| -exec <執(zhí)行指令> | 假設(shè)find指令的回傳值為true,就執(zhí)行該指令 |
| -false | 將find指令的回傳值皆設(shè)為false |
| -fls <列表文件> | 此參數(shù)的效果和指定-ls參數(shù)類似,但會把結(jié)果保存為指定的列表文件 |
| -follow | 排除符號連接 |
| -fprint <列表文件> | 此參數(shù)的效果和指定-print參數(shù)類似,但會把結(jié)果保存成指定的列表文件 |
| -fprint0 <列表文件> | 此參數(shù)的效果和指定-print0參數(shù)類似,但會把結(jié)果保存成指定的列表文件 |
| -fprintf <列表文件> <輸出格式> | 此參數(shù)的效果和指定-printf參數(shù)類似,但會把結(jié)果保存成指定的列表文件 |
| -fstype <文件系統(tǒng)類型> | 只尋找該文件系統(tǒng)類型下的文件或目錄 |
| -gid <群組識別碼> | 查找符合指定群組識別碼的文件或目錄 |
| -group <群組名稱> | 查找符合指定群組名稱的文件或目錄 |
| -help或——help | 在線幫助 |
| -name <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
| -iname <范本樣式> | 此參數(shù)的效果和指定-name參數(shù)類似,但忽略字符大小寫的差別 |
| -ilname <范本樣式> | 此參數(shù)的效果和指定-lname參數(shù)類似,但忽略字符大小寫的差別 |
| -inum <inode編號> | 查找符合指定的inode編號的文件或目錄 |
| -path <范本樣式> | 指定字符串作為尋找目錄的范本樣式 |
| -ipath <范本樣式> | 此參數(shù)的效果和指定-path參數(shù)類似,但忽略字符大小寫的差別 |
| -iregex <范本樣式> | 此參數(shù)的效果和指定-regexe參數(shù)類似,但忽略字符大小寫的差別 |
| -links <連接數(shù)目> | 查找符合指定的硬連接數(shù)目的文件或目錄 |
| -ls | 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出 |
| -maxdepth <目錄層級> | 設(shè)置最大目錄層級 |
| -mindepth <目錄層級> | 設(shè)置最小目錄層級 |
| -mmin <分鐘> | 查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算 |
| -mount | 此參數(shù)的效果和指定-xdev相同 |
| -mtime <24小時數(shù)> | 查找在指定時間曾被更改過的文件或目錄,單位以 24 小時計算 |
| -newer <參考文件或目錄> | 查找其更改時間較指定文件或目錄的更改時間更接近現(xiàn)在的文件或目錄 |
| -nogroup | 找出不屬于本地主機群組識別碼的文件或目錄 |
| -noleaf | 不去考慮目錄至少需擁有兩個硬連接存在 |
| -nouser | 找出不屬于本地主機用戶識別碼的文件或目錄 |
| -ok <執(zhí)行指令> | 此參數(shù)的效果和指定-exec類似,但在執(zhí)行指令之前會先詢問用戶,若回答y或Y,則放棄執(zhí)行命令 |
| -perm <權(quán)限數(shù)值> | 查找符合指定的權(quán)限數(shù)值的文件或目錄 |
| 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出,格式為每列一個名稱,每個名稱前皆有./字符串 | |
| -print0 | 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出,格式為全部的名稱皆在同一行 |
| -printf <輸出格式> | 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標(biāo)準(zhǔn)輸出,格式可以自行指定 |
| -prune | 不尋找字符串作為尋找文件或目錄的范本樣式 |
| -regex <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
| -size <文件大小> | 查找符合指定的文件大小的文件 |
| -true | 將find指令的回傳值皆設(shè)為true |
| -type <文件類型> | 只尋找符合指定的文件類型的文件 |
| -uid <用戶識別碼> | 查找符合指定的用戶識別碼的文件或目錄 |
| -used <日數(shù)> | 查找文件或目錄被更改之后在指定時間曾被存取過的文件或目錄,單位以日計算 |
| -user <擁有者名稱> | 查找符和指定的擁有者名稱的文件或目錄 |
| -version或——version | 顯示版本信息 |
| -xdev | 將范圍局限在先行的文件系統(tǒng)中 |
| -xtype <文件類型> | 此參數(shù)的效果和指定-type參數(shù)類似,差別在于它針對符號連接檢查 |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點
疑難解答
圖片精選