歡迎來到藍隊云小課堂
每次磁盤報警,你是不是還在用find . -name "*.log"然后一層層du -sh?每次緊急排查,是不是還在手動翻找今天修改的文件?每次清理日志,是不是還在擔心誤刪了重要文件?
今天分享立刻就能用的find神技,每個命令都能讓你在關鍵時刻快人一步
一、神技1:按時間精準篩選
1.1 查找最近修改的文件
# 查找5分鐘內修改過的文件(緊急排查時用)
find /var/log -type f -mmin -5
# 查找今天修改過的所有文件
find /home -type f -mtime 0
# 查找7天前修改的文件
find /backup -type f -mtime +7
時間參數(shù)解密:
-mmin -5:5分鐘內修改過(注意是分鐘,不是分鐘數(shù))
-mtime +7:7天前修改的
-mtime 0:今天(0-24小時內)
-mtime -1:1天內(相當于24小時內)
1.2 實戰(zhàn):清理舊日志
# 刪除30天前的日志文件
find /var/log -name "*.log" -type f -mtime +30 -delete
# 安全版:先看看會刪哪些文件
find /var/log -name "*.log" -type f -mtime +30 | wc -l
find /var/log -name "*.log" -type f -mtime +30 -ls
二、神技2:按大小查找
2.1 查找大文件
# 查找大于100MB的文件
find / -type f -size +100M 2>/dev/null
# 查找大于1GB的日志文件
find /var -name "*.log" -type f -size +1G 2>/dev/null
# 查找10KB到100KB之間的配置文件
find /etc -type f -size +10k -size -100k
大小單位速查:
c:字節(jié)
k:KB(1024字節(jié))
M:MB
G:GB
b:512字節(jié)塊(默認)
2.2 實戰(zhàn):清理Docker占用的磁盤
# 查找所有超過100MB的Docker相關文件
find /var/lib/docker -type f -size +100M 2>/dev/null | head -20
# 按大小排序顯示
find /var/lib/docker -type f -exec du -h {} + 2>/dev/null | sort -rh | head -20
三、神技3:權限查找
3.1 查找危險權限的文件
# 查找所有SUID文件(危險?。?/span>
find / -type f -perm /4000 2>/dev/null
# 查找所有可寫的配置文件
find /etc -type f -perm /022 2>/dev/null
# 查找任何人都可寫的文件
find / -type f -perm /o+w 2>/dev/null | grep -v /proc/
權限參數(shù)解析:
-perm /4000:設置了SUID位
-perm /022:組或其他用戶可寫
-perm 644:精確等于644權限
-perm -644:包含644權限(更寬松)
四、神技4:內容查找
4.1 在多級目錄中搜索內容
# 在Java文件中搜索"password"
find . -name "*.java" -type f -exec grep -l "password" {} \\;
# 不區(qū)分大小寫搜索"error"
find /var/log -name "*.log" -type f -exec grep -i "error" {} +
# 搜索并顯示行號
find . -name "*.py" -exec grep -n "import" {} +
注意:{} +比 {} \\;更快,因為一次傳遞多個文件。
五、神技5:高級組合技
5.1 查找并立即處理
# 查找7天前的日志,并壓縮
find /var/log -name "*.log" -type f -mtime +7 -exec gzip {} \\;
# 查找超過100MB的日志,并清空(保留文件)
find /var/log -name "*.log" -type f -size +100M -exec truncate -s 0 {} \\;
# 查找所有圖片,并復制到備份目錄
find . -name "*.jpg" -o -name "*.png" -type f -exec cp {} /backup/images/ \\;
六、一張表記住常用組合
任務 | 命令 | 備注 |
找今天改過的文件 | find . -mtime 0 | 緊急排查用 |
找大文件 | find / -size +100M | 定位磁盤占用 |
找特定權限文件 | find / -perm /4000 | 安全審計 |
找內容 | find . -name "*.java" -exec grep "TODO" {} + | 代碼審查 |
批量處理 | find . -name "*.log" -print0 \\| xargs -0 gzip | 高效壓縮 |
找空文件/目錄 | find . -empty | 清理空間 |
七、記住這三個命令就夠了
如果你記不住那么多參數(shù),只要記住這三個組合:
# 1. 按時間找:今天改過的文件
find . -mtime 0
# 2. 按大小找:大文件
find . -size +100M
# 3. 按內容找:含關鍵字的文件
find . -type f -exec grep -l "關鍵字" {} +
最后的小貼士:用find前先cd到正確目錄,避免搜索全盤浪費時間和I/O。
更多技術知識,藍隊云期待與你一起探索。