天天看点

Linux下的find命令详解

介绍

Linux系统中的 find 命令在查找文件时非常有用而且方便。它可以根据不同的条件来查找文件,例如权限、拥有者、修改日期/时间、文件大小等等。

find命令的基本语法如下

find [路径] [选项] [操作]      

常用选项

这里只演示一下常用的选项,更多用法可以查看帮助文档

man find      
选项 含义
-name 根据文件名进行查找
-perm 根据文件权限进行查找
-prune 排除 查找目录
-user 根据文件属主查找
-group 根据文件属组查找
-mtime -n | +n 根据文件更改时间查找
-type 按照文件类型查找
-size -n | +n 按文件大小查找
-mindepth n 从n级子目录开始搜索
-maxdepth n 最后搜索到n级子目录

-type选项

类型 解释
f 普通文件
d 目录
c 字符设备文件
b 块设备文件
l 链接文件
p 管道文件

搜索当前目录下的文件

find .      

搜索当前目录下的链接文件

find .      

-size选项

类型 解释
-n 大小小于n的文件
+n 大小大于n的文件
n 大小等于n的文件

常用的选项单位如下

单位 解释
b for 512-byte blocks (this is the default if no suffix is used)
c for bytes
w for two-byte words
k for Kilobytes (units of 1024 bytes)
M for Megabytes (units of 1048576 bytes)
G for Gigabytes (units of 1073741824 bytes)

查找/etc目录下小于1000字节的文件

find      

查找/etc目录下大于1M的文件

find      

-mtime选项

类型 解释
-n n天以内修改的文件
+n n天以外修改的文件
n 正好n天修改的文件

查找etc目录下5天之内修改且以conf结尾的文件

find /etc -mtime -5 -name '*.conf'      

查找etc目录下10天之前修改且属主为root的文件

find      

-mmin选项

类型 解释
-n n分钟以内修改的文件
+n n分钟以外修改的文件

查找/etc目录下30分钟之前修改的文件

find      

查找/etc目录下30分钟之内修改的目录

find      

-mindepth选项

表示从n级子目录开始搜索

假如/root/dir1的文件目录结构如下

tree /root/dir1

# 输出如下      

在/root/level1下的3级子目录开始搜索

find /root/dir1 -mindepth 3

# 输出如下      

-maxdepth选项

表示最多搜索到n级子目录

find /root/dir1 -maxdepth 2

# 输出如下      

操作

-print 打印输出(默认输出,不加也行)

-exec 对搜索到的文件执行特定的操作,格式为-exec command {} \;

搜索/etc下的文件(非目录),文件名以conf结尾,且大于10k,然后将其删除

find /etc -type f -name '*.conf' -size +10k -exec rm -f {} \;      
find /var/log -name '*.log' -mtime +7 -exec rm -rf {} \;      
find /etc -type f  -name '*.conf' -size +10k -exec cp {} /root/conf \;      

参考博客