新
| | |
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"