find选项

语法格式: find [路径] [选项] [操作]

选项: -name 根据文件名查找

-iname不区分大小写

find /etc -name "*.conf"

选项:-perm 根据文件权限查找

选项:-prune 该选项可以排除某些查找目录

选项:-user 根据文件属主查找

选项:-group 根据文件数组查找

选项:-mtime -n | +n 根据文件更改时间查找

-n   n天以内修改的文件
+n   n天以外修改的文件
n    正好n天修改的文件

例子1:查找/etc目录下5天之内修改且以conf结尾的文件
find /etc -mtime -5 -name "*.conf"
例子2:查找/etc目录下10天之前修改且属主为root的文件
find /etc -mtime +10 -user root

选项:-mmin 根据更改分钟来查找

-n   n分钟以内修改的文件
+n   n分钟以外修改的文件

例子1: 查找/etc目录下30分钟之前修改的文件
find /etc -mmin +30
例子: 查找/etc目录下30分钟之内修改的目录
find /etc -mmin -30

选项:-nogroup 查找无有效数组的文件

选项:-nouser 查找无有效属主的文件

选项:-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: 查找/etc目录下小于100000字节的文件  find /etc -size -10000c
例子2: 查找/etc目录下大于1M的文件         find /etc -size +1M

选项:-mindepth n 从n级子目录开始搜索

例子:在/etc下的3级子目录开始搜索
find /etc -mindepth 3

选项:-maxdepth n最多搜索到n级子目录

例子1:在/etc下搜索符合条件的文件,但最多搜索到2级子目录
find /etc -maxdepth 3 -name "*.conf"

find操作

操作:-print 打印输出(默认的)

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

例子1:搜索 /etc下的文件{非目录},文件名以conf结尾,且大于10k,然后将其删除
[root@docker-host sh]# cp -r /etc ./test
[root@docker-host sh]# find ./test/ -type f -name "*.conf" -size +10 -exec rm -rf {} \;
例子:搜索当前test目录下大于1m的文件到当前1m目录下
find ./test -size +1M -exec cp {} ./1m \;

例子2:将/var/log/目录下以log结尾的文件,且更改时间在7天以上的删除
find /var/log -name '*.log' -mtime +7 -exec rm -rf {} \;

例子3:搜索条件和例子1一样,只是不删除,而是将其复制到 /root/conf 目录下
find ./etc/ -size +10k -type f -name  "*.conf" -exec cp {} /root/conf/ \;

操作:-ok 带提示的exec

图

逻辑运算符:

-a  与
-o  或
-not | ! 非

locate命令

文件查找命令,所属软件包mlocate、不同于find命令是在整块磁盘中搜索,locate命令是在数据库中查找文件。他是系统定时更新数据库后,使用locate命令查找到。更新数据库的命令是updatedb

updatedb命令

用户更新的数据库 /var/lib/mlocate/mlocate.db

所使用配置文件 /etc/updatedb.conf

因为我用的是虚拟机、迷你的centos7 ,默认没有安装locate。正好安装来证明updatedb是和locate关联的,locate 属于部分匹配的

[root@docker-host sh]# locate my.cnf
locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录
[root@docker-host sh]# updatedb
[root@docker-host sh]#
[root@docker-host sh]# locate my.cnf
/etc/my.cnf
/etc/my.cnf.d
/home/vagrant/labs/sh/test/my.cnf
/home/vagrant/labs/sh/test/my.cnf.d
[root@docker-host sh]#

新建个文件更新数据库查看

图

whereis

作用:查找某个命令的二进制程序文件、帮助文档、源代码文件

-b 只返回二进制文件 。 -m 只返回帮助文档文件 。 -s 只返回源代码文件

which

只返回二进制文件

Last modification:February 1, 2020
如果觉得我的文章对你有用,请随意赞赏