Linux find 命令可以用来查找文件和目录,并对它们进行后续操作。它支持按文件、文件夹、名称、创建日期、修改日期、所有者和权限进行等镜像搜索。通过使用
-exec参数可以对找到的文件或文件夹执行其他 UNIX 命令。
Help
参数说明
按文件名查找
-name pattern按文件名查找,支持正则-iname pattern按文件名查找,支持正则,不区分大小写-regex pattern按正则查找
按属组、属主、权限查找
-user username按文件属主来查找-group groupname按组来查找-uid uid按 UID 号查找-gid gid按 GID 查找-nouser查无有效属主的文件,即文件的属主在/etc/passwd 中不存-nogroup查无有效属组的文件,即文件的属组在/etc/groups 中不存在-perm MODE按执行权限来查找find . -perm 644
按文件类型查找
-type type其中,type 如下:b块设备文件f普通文件d目录文件c字符设备文件l连接文件s套接字文件p管道文件
按时间查找
-atime -n/+n按文件访问时间来查-n指 n 天以内(下同),-0.25表示6h以内+n指 n 天以前(下同)
-mtime -n/+n按文件更改时间查找文件-ctime -n/+n按文件创建时间查找文件-newer f1/!f2以 file 文件为条件,判断比它新的文件f1表示比 f1 新的!f2表示比 f1 旧的
-amin [+|-]n以访问时间(分钟)查找-mmin [+|-]n以数据修改时间(分钟)查找-cmin [+|-]TIME以元数据修改时间(分钟)查找
按文件大小查找
-size [+|-]SIZE按文件大小查询,大小包含K、M、G的单位,示例-size 5M查找大小为 5M 的文件,允许有小偏差-size -5M查询比 5M 小的文件-size +5M查询比 5M 大的文件
其他
-maxdepth n按文件夹深度,最多搜索 n 层-mindepth n按文件夹深度,最少搜索 n 层-depth使查找在进入子目录前先行查找完本目录-fstype查更改时间比 f1 新但比 f2 旧的文件-mount查文件时不跨越文件系统 mount 点-follow如果遇到符号链接文件,就跟踪链接所指的文件-cpio查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab 中找到-prune忽略某个目录-empty查找内容为空的文件
组合条件
-a与,find . -type f -a -size +5M-o或,find . -type f -o -nouser-notor!非find . -not -type f查找非普通文件find . ! -type f同上
处理动作
-print默认为打印,输出入屏幕-ls以 ls 格式输出-delete删除查找到的文件-fls /path-to-somefile将查询到的文件,以 ls 详细信息格式保存到 somefile 文件中-ok COMMAND {} \;将查找到的文件传递给COMMAND命令,并且每步都提示用户确认操作-exec COMMAND {} \;将查找到的文件传递给COMMAND命令,直接修改完成,无确认- 可以采用
xargs -i代替符为{},示例find . -type f | xargs -i cp {} /tmp find -exec unlink
- 可以采用
示例
# 查找30天前修改的文件,并删除
find /data/bkee/logs/ -name "*log*" -mtime +30 -delete
# 查找7天没有访问的文件
find /etc -atime +7 -ls
# 查找1天没有修改的文件
find /etc -mtime -1 -ls
# 查找 /tmp 目录下文件名不包含 abc 的文件
find /tmp -not -name *abc*
# 查找指定目录下的文件,并计算 md5sum,+ is a more efficient way to pass arguments to -exec
find /path/to/dir1 /path/to/dir2 -type f -exec md5sum {} +查找大于 10M 的文件
find / -type f -size +10000000c -exec du -sh {} \;dos2unix
find -type f | xargs dos2unix -ochmod
find ./ -type f -name "*.sh" | xargs -i chmod +x {}最近更新
最新评论