新
| | |
find 常用命令備忘
find 命令用於在目錄層次結構中搜索文件和目錄。
基本搜索
# 在當前目錄及子目錄中按名稱查找文件 (區分大小寫)
find . -name "test.txt"
# 按名稱查找文件 (忽略大小寫)
find . -iname "test.txt"
# 查找所有以 .log 結尾的文件
find . -name "*.log"
# 按正規表達式查找
find . -regex ".*\.js"
按類型查找
# 查找目錄 (d: directory)
find . -type d -name "src"
# 查找普通文件 (f: file)
find . -type f -name "*.config"
# 查找符號連結 (l: link)
find . -type l
按大小查找
# 查找大於 100MB 的文件
find . -type f -size +100M
# 查找小於 10k 的文件
find . -type f -size -10k
# 查找正好 1G 的文件
find . -type f -size 1G
# 查找空文件或空目錄
find . -empty
按修改時間查找
# 查找在過去 24 小時內修改過的文件 (n*24小時)
find . -mtime -1
# 查找在 7 天前修改過的文件
find . -mtime +7
# 查找在過去 10 分鐘內修改過的文件 (minutes)
find . -mmin -10
# 查找在過去 1 小時內訪問過的文件 (atime)
find . -atime -1
# 查找在過去 1 小時內狀態改變的文件 (ctime, 如權限修改)
find . -ctime -1
按權限與所有者查找
# 查找權限為 777 的文件
find . -perm 777
# 查找所属用戶為 root 的文件
find . -user root
# 查找所属組為 developers 的文件
find . -group developers
組合搜索 (邏輯運算)
# AND (預設): 查找名為 code 且類型為目錄
find . -name "code" -type d
# OR: 查找以 .sh 或 .py 結尾的文件
find . \( -name "*.sh" -o -name "*.py" \)
# NOT: 查找不是以 .txt 結尾的文件
find . ! -name "*.txt"
找到後執行操作 (exec & delete)
# 查找並刪除所有 .tmp 文件 (慎用)
find . -name "*.tmp" -delete
# 查找並列出詳細資訊 (對每個找到的文件執行 ls -l)
find . -name "*.txt" -exec ls -l {} \;
# 查找並移動到指定目錄
find . -name "*.mp3" -exec mv {} /tmp/music/ \;
# 查找並更改權限
find . -type d -exec chmod 755 {} \;
# 查找包含特定內容的文件 (結合 grep)
find . -type f -name "*.txt" -exec grep -l "search_term" {} +
深度控制
# 僅在當前目錄查找 (不進入子目錄)
find . -maxdepth 1 -name "*.js"
# 至少跳過兩級子目錄
find . -mindepth 3 -name "*.log"