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
只返回二进制文件