Linux find 命令完全指南及核心用法
find 是 Linux 系統(tǒng)最強(qiáng)大的文件搜索工具,支持 嵌套遍歷、條件篩選、執(zhí)行動作。以下通過場景分類解析核心用法,涵蓋高效搜索、文件管理及高級技巧:
一、基礎(chǔ)搜索模式
1. 按文件名搜索(精確/模糊匹配)
<BASH>
find /path -name "*.log" # 精確匹配 .log 后綴(區(qū)分大小寫) find /home -iname "*.TXT" # 模糊匹配 .txt 后綴(忽略大小寫) find . -name "data_[0-9].csv" # 使用通配符 [] ? * 匹配
2. 排除指定目錄/文件
find /var/log -path "/var/log/nginx" -prune -o -name "*.log" # 排除 nginx 目錄 find . -not -name "*.tmp" # 排除所有 .tmp 文件
二、根據(jù)文件類型篩選
使用 -type 篩選文件類型:
f: 常規(guī)文件d: 目錄l: 符號鏈接s: 套接字p: 命名管道
find /opt -type d -name "config" # 搜索名為 config 的目錄 find ~/ -type f -empty # 查找當(dāng)前用戶下空文件 find /tmp -type l -ls # 列出 /tmp 下所有符號鏈接詳細(xì)信息
三、時(shí)間維度搜索
按時(shí)間篩選(文件修改時(shí)間 -mtime / 訪問時(shí)間 -atime):
+n: n 天前-n: 最近 n 天內(nèi)n: 正好 n 天前
find . -mtime -7 # 查找過去 7 天內(nèi)修改過的文件 find /var/log -mtime +30 -name "*.log" # 搜索 30 天前的日志文件
按分鐘級精準(zhǔn)控制(-mmin):
find /tmp -mmin -10 # 查找過去 10 分鐘內(nèi)修改的文件
四、文件大小搜索
使用 -size (單位:c=字節(jié), k=KB, M=MB, G=GB):
+n: 大于 n-n: 小于 nn: 等于 n
find / -size +100M # 全局搜索大于 100MB 的文件(慎用根目錄) find ~/Downloads -size -5k # 查找 Downloads 中小于 5KB 的文件
五、權(quán)限與所有權(quán)過濾
1. 按權(quán)限位搜索(數(shù)字或符號模式)
find . -perm 644 # 精確匹配權(quán)限為 644 的文件 find /etc -perm -u=r # 用戶可讀的文件(權(quán)限包含 r) find /bin -perm /u=s # 包含 SUID 的文件
2. 按用戶/組篩選
find /var -user www-data # 屬于 www-data 用戶的文件 find /home -group dev # 屬于 dev 組的文件
六、組合條件與邏輯操作
-a(-and): 邏輯與(默認(rèn))-o(-or) : 邏輯或!(-not) : 邏輯非- 使用
()分組(需轉(zhuǎn)義)
find /data \( -name "*.jpg" -o -name "*.png" \) -size +2M # 查找 JPG 或 PNG 且大于 2MB find . -type f ! -name "*.tmp" # 排除所有 .tmp 文件
七、執(zhí)行后續(xù)動作(-exec 與 xargs)
1. 直接執(zhí)行命令(-exec)
find . -name "*.bak" -exec rm -f {} \; # 刪除所有 .bak 文件(確認(rèn)無誤后執(zhí)行)
find /var/log -type f -mtime +30 -exec gzip {} \; # 壓縮 30 天前的日志文件2. 結(jié)合 xargs 提高效率
find /tmp -name "core.*" -print0 | xargs -0 rm -f # 安全處理含空格文件名
3. 刪除文件(內(nèi)建動作)
find . -type f -name "*.tmp" -delete # 直接刪除(-delete 必須放在最后)
八、高級搜索場景
1. 查找占用 inode 的小文件
find /path -type f -size +0c -links 1 -exec ls -i {} \; # 非硬鏈接的獨(dú)立文件2. 查找重復(fù)文件(根據(jù) MD5)
find . -type f -exec md5sum {} + | sort | uniq -w32 -dD # 生成校驗(yàn)和對比重復(fù)項(xiàng)九、安全排查技巧
1. 搜索可疑 SUID/SGID 文件
find / -perm /4000 -user root 2>/dev/null # SUID 且屬主為 root find / -perm /2000 -group root 2>/dev/null # SGID 且屬組為 root
2. 查找全局可寫文件
find / -xdev -type f -perm -0002 ! -perm -1000 # 忽略粘滯位目錄下的文件
十、性能優(yōu)化建議
限定搜索深度:-maxdepth 和 -mindepth
find /var/log -maxdepth 2 -name "*.log" # 僅搜索兩層目錄
跳過特定文件系統(tǒng):-xdev(不跨文件系統(tǒng))
find / -xdev -name "lost+found" # 僅在當(dāng)前文件系統(tǒng)搜索
總結(jié)
- 核心模式:
find [路徑] [條件] [動作],靈活組合條件實(shí)現(xiàn)精準(zhǔn)搜索。 - 安全第一:執(zhí)行刪除或修改前,建議先用
-print或-ls確認(rèn)目標(biāo)文件。 - 效率優(yōu)先:在高負(fù)載場景下,盡量減少全盤掃描,合理使用
-xargs提升性能。
到此這篇關(guān)于Linux find 命令完全指南的文章就介紹到這了,更多相關(guān)Linux find 命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
從基礎(chǔ)到高階詳解Linux?Shell文件去重的完整指南
在日常開發(fā)和運(yùn)維工作中,我們經(jīng)常會遇到文件內(nèi)容重復(fù)的場景,本文將從「基礎(chǔ)去重」到「高階實(shí)戰(zhàn)」,系統(tǒng)講解?Linux?Shell?中文件去重的核心方法,,同時(shí)深入原理分析和性能對比,幫助你根據(jù)實(shí)際場景選擇最優(yōu)方案2026-04-04
Linux?du命令實(shí)現(xiàn)根據(jù)文件或者文件夾大小排序輸出
Linux是一個(gè)強(qiáng)大的操作系統(tǒng),廣泛用于服務(wù)器和個(gè)人計(jì)算機(jī),本文主要來和大家聊聊如何利用du命令實(shí)現(xiàn)根據(jù)文件或者文件夾大小排序輸出,感興趣的可以了解下2023-09-09
在Linux中編寫shell腳本監(jiān)聽指定端口的實(shí)現(xiàn)方式
這篇文章主要介紹了在Linux中監(jiān)聽指定端口的幾種方法,包括使用netcat、socat、Python腳本等,并提供了每種方法的詳細(xì)步驟和示例腳本,需要的朋友可以參考下2025-12-12
Linux下使用Shell腳本實(shí)現(xiàn)ftp的自動上傳下載的代碼小結(jié)
如何實(shí)現(xiàn)在ftp自動上傳下載文件腳本呢?想必還有很多朋友都不太了解吧,下面是ftp自動上傳下載文件腳本方法,希望對朋友們有些幫助2013-02-02
Linux?dd命令的深度解析與應(yīng)用實(shí)踐
dd命令是Linux系統(tǒng)中一個(gè)功能強(qiáng)大且用途廣泛的命令行工具,其名稱來源于"Data?Duplicator",作為系統(tǒng)管理員和數(shù)據(jù)恢復(fù)專家的"瑞士軍刀",dd命令能夠以原始方式處理數(shù)據(jù),完成從簡單文件復(fù)制到復(fù)雜磁盤操作的各類任務(wù),本文詳細(xì)介紹了Linux?dd命令的深度解析與應(yīng)用2025-05-05
Linux在shell中自動生成1到100的數(shù)組方法(兩種方法)
之前自己在寫shell腳本的時(shí)候,需要自動創(chuàng)建1-100的文本確不知道該如何去創(chuàng)建。今天小編給大家分享兩種方法,需要的朋友參考下2017-02-02

