在Linux系統管理員的工具箱里,有一個命令被嚴重低估——它能在百萬級文件里定位你要的那一行配置,能批量清理過期日志,還能在滲透測試中揪出危險權限的文件。
不同于簡單的文件名檢索,這個工具遍歷目錄樹,按名稱、類型、時間、大小、權限任意組合過濾,并對每個匹配結果執行動作。它是Linux上最強大的文件系統利器,而掌握十幾個核心參數就能覆蓋90%的生產場景。
![]()
命令骨架:路徑+表達式+動作
基本結構很簡單:[命令] [路徑...] [表達式]。默認動作是-print,即打印路徑。多個表達式默認用邏輯AND連接,-o表示OR,!或-not表示否定。
參數順序有講究。-name之前的是選項(如-maxdepth限制搜索深度),之后的是測試條件和動作。例如:
[命令] . -maxdepth 2 -type f -name '*.py'
這條指令只在當前目錄下兩層查找Python文件。括號需要轉義:[命令] . \( -name '*.log' -o -name '*.tmp' \) -delete,同時刪除日志和臨時文件。
核心測試條件一覽 -name PATTERNglob匹配,區分大小寫 -iname不區分大小寫 -type f|d|l|c|b|p|s文件類型:普通文件、目錄、符號鏈接、字符設備、塊設備、管道、套接字 -size +N|-N c|k|M|G大小,c=字節,M=MiB,+表示大于,-表示小于 -mtime ±NN*24小時前修改,-N表示比N天新,+N表示比N天舊 -mmin ±N分鐘級修改時間 -newer FILE比指定文件更新 -perm /MODE任意權限位匹配 -perm -MODE所有權限位必須匹配 -user NAME按所有者 -group NAME按所屬組 -empty空文件或空目錄 -path PATTERN匹配完整路徑 動作:從打印到批量執行
定位到文件后做什么?該工具提供幾種動作:
-print是默認行為;-print0用NUL分隔路徑,配合xargs -0處理含空格的文件名;-delete直接刪除匹配項;-prune跳過指定目錄不進入。
-exec是最強大的動作,但有兩種寫法性能天差地別:
-exec cmd {} \;:每個匹配執行一次命令,慢。
-exec cmd {} +:批量傳遞參數,快得多。
生產環境幾乎只用后者。例如統計代碼行數:[命令] . -name '*.py' -exec wc -l {} +,一次性把所有Python文件傳給wc。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.