find 命令的基本信息如下:
- 命令名称:find。
- 英文原意:search for files in a directory hierarchy.
- 所在路径:/bin/find。
- 执行权限:所有用户。
- 功能描述:在目录中查找文件。
命令格式
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
find命令的参数:
1)path:要查找的目录路径。
~ 表示$HOME目录
. 表示当前目录
/ 表示根目录
2)print:表示将结果输出到标准输出。
3)exec:对匹配的文件执行该参数所给出的shell命令。
形式为command {} \;注意{}与\;之间有空格
常用选项
-user 查找文件所属用户为 yangyang 的所有文件,例如:find . -user yangyang
-group 查找文件所属组为 yangyang 的所有文件,例如:find . -group yangyang
-type 根据类型查找:如下
f 文件 find . -type f
d 目录 find . -type d
c 字符设备文件 find . -type c
b 块设备文件 find . -type b
l 链接文件 find . -type l
p 管道文件 find . -type p
-size 根据文件大小查询
-n 小于 大小为 n 的文件
+n 大于 大小为 n 的文件
举例1:查找 /ect 目录下,小于 10000 字节的文件。 find /etc -size +10000c
举例2:查找 /etc 目录下,大于 1M 的文件。find /etc -size -1M
-mtime
-n n 天以内修改的文件。
+n n 天以外修改的文件。
n 正好 n天 修改的文件
举例1: 查询 /etc 目录下,5天以内修改 且以 conf 结尾的文件。 find /etc -mtime -5 -name '*.conf'
举例2: 查询 /etc 目录下,10天之前修改,且属于 yangyang 的文件。 find /etc -mtime +10 -user yangyang
-mmin
-n n 分钟以内修改过的文件
+n n 分钟之前修改过的文件
举例1: 查询 /etc 目录下 30分钟 之前修改过的文件。 find /etc -mmin +30
举例1: 查询 /etc 目录下 30分钟 之前修改过的目录。 find /etc -mmin -30 -type d
下面通过一些简单的例子来介绍下find的常规用法:
1、按名字查找
在当前目录及子目录中,查找大写字母开头的txt文件
$ find . -name '[A-Z]*.txt'
在/etc及其子目录中,查找host开头的文件
$ find /etc -name 'host*'
在$HOME目录及其子目录中,查找所有文件
$ find ~ -name '*'
2、执行命令
1)查找 del.txt 并删除,删除前提示确认
$ find . -name 'del.txt' -ok rm {} \;
2) 查找 aa.txt 并备份为aa.txt.bak
$ find . -name 'aa.txt' -exec cp aatxt.bak {} \;
3)查当前目录下的所有普通文件
# find . -type f -exec ls -l {} \;
-rw-r–r– 1 root root 34928 2003-02-25 ./conf/httpd.conf
-rw-r–r– 1 root root 12959 2003-02-25 ./conf/magic
-rw-r–r– 1 root root 180 2003-02-25 ./conf.d/README