find 是 Linux/Unix 系統(tǒng)中用于在目錄樹中搜索文件的強(qiáng)大工具,支持根據(jù)名稱、類型、時(shí)間、權(quán)限等多種條件查找文件,并支持對(duì)搜索結(jié)果執(zhí)行操作。以下是詳細(xì)用法及示例:
基本語(yǔ)法
find [路徑] [選項(xiàng)] [操作]
常用選項(xiàng)和示例
1. 按名稱查找文件
-
-name:根據(jù)文件名(區(qū)分大小寫) -
-iname:根據(jù)文件名(不區(qū)分大小寫)
# 查找當(dāng)前目錄下所有 .txt 文件
find . -name "*.txt"
# 查找 /etc 目錄下所有以 .conf 結(jié)尾的文件(不區(qū)分大小寫)
find /etc -iname "*.conf"
2. 按類型查找
-
-type:指定文件類型:-
f:普通文件 -
d:目錄 -
l:符號(hào)鏈接 -
s:套接字文件
-
# 查找 /var 目錄下所有子目錄
find /var -type d
# 查找當(dāng)前目錄下的所有符號(hào)鏈接
find . -type l
3. 按時(shí)間查找
-
-mtime:文件內(nèi)容修改時(shí)間(單位:天)-
+n:n 天前修改 -
-n:n 天內(nèi)修改
-
-
-atime:文件訪問(wèn)時(shí)間 -
-ctime:文件狀態(tài)修改時(shí)間(如權(quán)限)
# 查找 7 天前修改過(guò)的文件
find /home -mtime +7
# 查找 1 天內(nèi)被訪問(wèn)過(guò)的文件
find /var/log -atime -1
4. 按文件大小查找
-
-size:指定文件大?。?-
+n:大于 n -
-n:小于 n -
n:等于 n - 單位:
c(字節(jié))、k(KB)、M(MB)、G(GB)
-
# 查找大于 100MB 的文件
find / -size +100M
# 查找小于 1KB 的文件
find . -size -1k
5. 按權(quán)限/用戶查找
-
-perm:按權(quán)限查找 -
-user:按文件所有者查找 -
-group:按文件所屬組查找
# 查找權(quán)限為 644 的文件
find /etc -perm 644
# 查找用戶 john 的所有文件
find /home -user john
6. 組合條件
-
-a:與(默認(rèn)) -
-o:或 -
!:非
# 查找當(dāng)前目錄下所有 .log 文件且大于 1MB
find . -name "*.log" -a -size +1M
# 查找非 .txt 文件
find . ! -name "*.txt"
7. 排除目錄
-
-prune:跳過(guò)指定目錄
# 查找所有 .js 文件,但跳過(guò) node_modules 目錄
find . -path ./node_modules -prune -o -name "*.js" -print
8. 執(zhí)行操作
-
-exec:對(duì)搜索結(jié)果執(zhí)行命令(用{}表示文件名,以\;結(jié)束) -
-delete:直接刪除文件 -
-print:打印結(jié)果(默認(rèn)行為)
# 刪除所有 .tmp 文件
find /tmp -name "*.tmp" -exec rm -f {} \;
# 將所有 .txt 文件復(fù)制到 backup 目錄
find . -name "*.txt" -exec cp {} ./backup \;
# 刪除空目錄
find . -type d -empty -delete
9. 其他實(shí)用操作
-
-maxdepth:限制搜索深度 -
-empty:查找空文件或目錄
# 僅搜索當(dāng)前目錄(不遞歸子目錄)
find . -maxdepth 1 -name "*.sh"
# 查找所有空文件
find /var/log -type f -empty
綜合示例
# 查找 /home 目錄下用戶為 john、7 天前修改過(guò)、大于 10MB 的 .mp4 文件并刪除
find /home -user john -name "*.mp4" -mtime +7 -size +10M -exec rm {} \;
掌握 find 命令能極大提高文件管理效率,結(jié)合實(shí)際需求組合條件靈活使用,你就距成“神”不遠(yuǎn)了! ^ v ^ !