find 命令是用來(lái)在指定目錄下查找文件,用法太多,就列幾個(gè)常用的
1、根據(jù)文件或者正則表達(dá)式進(jìn)行匹配
列出當(dāng)前目錄及子目錄下所有的文件和文件夾

這時(shí)候使用 tree -a 更直觀
在/home 目錄下查找以.txt結(jié)尾的文件名

若要忽略大小寫(xiě)使用 find /home -iname "*.txt"
查找所有以.txt和.pdf結(jié)尾的文件
-name<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式

其中 -o 是或的意思
類似的還有:-a 且 ?,? -not 不滿足
匹配文件路徑或者文件
-path<范本樣式>:指定字符串作為尋找目錄的范本樣式

基于正則表達(dá)式匹配文件路徑
-regex<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式

忽略大小寫(xiě):find . -iregex ".*\(\.txt\|\.pdf\)$"
2、否定參數(shù)
使用 ! 參數(shù)

3、根據(jù)文件類型進(jìn)行搜索
find . -type 類型參數(shù)
類型參數(shù)包括:f 普通文件 ,l 符號(hào)連接, d 目錄, c 字符設(shè)備, b 塊設(shè)備 ,s 套接字, p Fifo
搜索符號(hào)連接

4、基于目錄深度搜索
-maxdepth<目錄層級(jí)>:設(shè)置最大目錄層級(jí);
?-mindepth<目錄層級(jí)>:設(shè)置最小目錄層級(jí);
搜索出最大目錄層級(jí)為3的所有txt文件

5、根據(jù)文件時(shí)間戳進(jìn)行搜索
UNIX/Linux文件系統(tǒng)每個(gè)文件都有三種時(shí)間戳:?
訪問(wèn)時(shí)間(-atime/天,-amin/分鐘):用戶最近一次訪問(wèn)時(shí)間。?
修改時(shí)間(-mtime/天,-mmin/分鐘):文件最后一次修改時(shí)間。?
變化時(shí)間(-ctime/天,-cmin/分鐘):文件數(shù)據(jù)元(例如權(quán)限等)最后一次修改時(shí)間。
七天內(nèi) ? ?-atime -7
剛好在前七天 ? -atime 7
超過(guò)七天內(nèi) ? -atime +7
找出訪問(wèn)時(shí)間超過(guò)10分鐘的所有文件

找出比a.txt 修改時(shí)間更新的所有文件

6、根據(jù)文件大小進(jìn)行匹配
find . -type f -size 文件大小單元
文件大小單元:
b -- 塊(512字節(jié)), c --字節(jié) ,w --字(2字節(jié)) ,k --千字節(jié), M -- 兆字節(jié) ,G -- 吉字節(jié)
搜索小于10KB的文件,注意k為小寫(xiě)?

7、刪除匹配文件
刪除當(dāng)前目錄下所有小于10k的a2.txt文件

8、根據(jù)文件權(quán)限進(jìn)行匹配
-perm<權(quán)限數(shù)值>:查找符合指定的權(quán)限數(shù)值的文件或目錄
找出當(dāng)前目錄下權(quán)限為644的文件

找出當(dāng)前目錄用戶susu擁有的所有文件

找出當(dāng)前目錄用戶組susu擁有的所有文件

9、借助-exec 選項(xiàng)與其他命令結(jié)合使用
-exec<執(zhí)行指令>:假設(shè)find指令的回傳值為T(mén)rue,就執(zhí)行該指令
找出當(dāng)前目錄下a.txt文件,并把所有權(quán)更改為用戶susu

其中,{}用于與-exec選項(xiàng)結(jié)合使用來(lái)匹配所有文件
10、搜索但跳過(guò)指定的目錄
-prune:不尋找字符串作為尋找文件或目錄的范本樣式
跳過(guò) root 目錄查找 *local* 文件

11、其他
列出所有長(zhǎng)度為零的文件
