1. 根據(jù)文件名檢索
find%20命令中的%20-name%20選項(xiàng)可以根據(jù)文件名稱進(jìn)行檢索(區(qū)分大小寫)。如需要忽略文件名中的大小寫,可以使用%20-iname%20選項(xiàng)。
都支持%20wildcards。如:
?%20可以表示任意一個(gè)單一的符號(hào)
*%20可以表示任意數(shù)量(包括%200)的未知符號(hào)
find%20/usr%20-name%20'*.txt':%20查找%20/usr%20目錄下所有文件名以%20.txt%20結(jié)尾的文件
find%20/tmp%20-name%20wa*%20-type%20l%20在/tmp下查找名為wa開頭且類型為符號(hào)鏈接的文件。find%20/mnt%20-name%20tom.txt%20-ftype%20vfat%20在/mnt下查找名稱為tom.txt且文件系統(tǒng)類型為vfat的文件。根據(jù)關(guān)鍵字查找find.-name"*.log"%20在當(dāng)前目錄查找以.log結(jié)尾的文件。
假如需要在搜索時(shí)匹配某個(gè)文件或目錄的完整路徑,而不僅僅是匹配文件名。可以使用%20-path%20或%20-ipath%20選項(xiàng)。
如:查找%20/usr%20下所有文件名以%20.txt%20結(jié)尾的文件或目錄,且該文件的父目錄必須是%20src。
可以使用以下命令:find%20/usr%20-path%20'*/src/*.txt'
2.%20根據(jù)文件類型檢索
只想搜索得到文件或目錄,即不想它們同時(shí)出現(xiàn)在結(jié)果中?梢允褂%20-type%20選項(xiàng)指定文件類型。
-type 選項(xiàng)最常用的參數(shù)如下:
f: 文件
d: 目錄
l: 符號(hào)鏈接
find /usr -type d -name 'python*'
檢索 /usr 下所有文件名以 python 開頭的目錄
3. 檢索空文件
-empty 選項(xiàng)用來檢索為空的文件或目錄。空文件即文件里沒有任何內(nèi)容,空目錄即目錄中沒有任何文件或子目錄。
find ~ -type d -empty
檢索用戶主目錄下所有的空目錄
4. 反義匹配
對當(dāng)前的匹配條件進(jìn)行“反義”(類似于邏輯非操作)。
如需要檢索 /usr 下所有文件名不以 .txt 為后綴的文件。
可以使用以下命令:find /usr -type f ! -name '*.txt'
也可以“翻轉(zhuǎn)”任何其他的篩選條件,如:
find /usr -type f ! -empty 檢索 /usr 下所有內(nèi)容不為空的文件
5. 根據(jù)時(shí)間日期進(jìn)行檢索
需要根據(jù)文件創(chuàng)建或修改的時(shí)間進(jìn)行檢索。Linux 系統(tǒng)中,與文件相關(guān)聯(lián)的時(shí)間參數(shù)有以下三種:
修改時(shí)間(Modification time):最后一次文件內(nèi)容有過更改的時(shí)間點(diǎn)
訪問時(shí)間(Access time):最后一次文件有被讀取過的時(shí)間點(diǎn)
變更時(shí)間(Change time):最后一次文件有被變更過的時(shí)間點(diǎn)(如內(nèi)容被修改,或權(quán)限等 metadata 被修改)
與此對應(yīng)的是 find 命令中的 -mtime,-atime 和 -ctime 三個(gè)選項(xiàng)。
這三個(gè)選項(xiàng)的使用遵循以下示例中的規(guī)則:
-mtime 2:該文件 2 天前被修改過
-mtime -2:該文件 2 天以內(nèi)被修改過
-mtime +2:該文件距離上次修改已經(jīng)超過2 天時(shí)間
find /usr -type f -mtime 2: 檢索 /usr 下兩天前被修改過的文件
如果覺得 -mtime 等選項(xiàng)以天為單位時(shí)間有點(diǎn)長,還可以使用 -mmin,-amin,-cmin 三個(gè)選項(xiàng)。
find /usr -type f -mtime +50 -mtime -100
檢索 /usr 下 50 到 100 天之前修改過的文件
find /usr -type f -mtime 2 -amin 5
檢索 /usr 下兩天前被修改過且 5 分鐘前又讀取過的文件