4.3.1、文件搜索命令-find
find为文件或目录的查找命令
用法较多,选项也很多,下面只介绍一些很常见常用的一些
find
• -name
• -size
• -user、-group
• -C
• -type (f、d、l)
• -inum
使用-o或者-a与上面6个组合使用
使用-exec或-ok与上面组合使用
命令路径:/bin/find
语法:find [搜索范围] [匹配条件]
一、-name选项,根据文件名来搜索,为精确匹配,只有文件名和被搜索的完全相同时才会被显示出来,并且区分大小写。但是可以用 * 来做任意匹配,使用 ? 来做单个字符匹配来进行模糊搜索,使用-iname来做不区分大小写的搜索。
此处-name后的搜索条件需要用单引号或双引号引起来,单引号强制引用,双引号为含义引用,注意使用。
[root@zabbixagent p1]# ls 1abc 1abcd abc Abc abcd [root@zabbixagent p1]# [root@zabbixagent p1]# pwd /root/p1 [root@zabbixagent p1]# find /root/p1/ -name abc /root/p1/abc [root@zabbixagent p1]# find /root/p1/ -name "*abc" /root/p1/abc /root/p1/1abc [root@zabbixagent p1]# find /root/p1/ -name "abc*" /root/p1/abc /root/p1/abcd [root@zabbixagent p1]# find /root/p1/ -name "*abc*" /root/p1/abc /root/p1/abcd /root/p1/1abc /root/p1/1abcd [root@zabbixagent p1]# find /root/p1/ -iname "*abc*" /root/p1/abc /root/p1/abcd /root/p1/1abc /root/p1/1abcd /root/p1/Abc [root@zabbixagent p1]#
二、-size,根据文件尺寸来查找,在linux中1数据块=512字节=1/2KB,即1KB=2数据块。
在n后面还可以加上单位,有k(小写)、M(大写)、G(大写)等单位。
+n:表示大于n个数据块的
-n表示小于n个数据块的
n表示等于n个数据块的
[root@zabbixagent ~]# find /etc/ -size +10240 #查找大于10240/2KB大小的文件,一般很少使用 /etc/udev/hwdb.bin [root@zabbixagent ~]# find /etc/ -size +1024k #查找大于1024k的文件 /etc/udev/hwdb.bin /etc/selinux/targeted/contexts/files/file_contexts.bin /etc/selinux/targeted/policy/policy.31 /etc/selinux/targeted/active/policy.kern /etc/selinux/targeted/active/policy.linked /etc/brltty/zh-tw.ctb [root@zabbixagent ~]# find /etc/ -size +1M #查找大于1M的文件 /etc/udev/hwdb.bin /etc/selinux/targeted/contexts/files/file_contexts.bin /etc/selinux/targeted/policy/policy.31 /etc/selinux/targeted/active/policy.kern /etc/selinux/targeted/active/policy.linked /etc/brltty/zh-tw.ctb
三、-user和-group,根据文件的所有者或者所属组来查找
eg:find /etc -user dongjie 查找所有者为dongjie的文件
find /etc -group 001 查找所属组为001的文件
四、根据时间属性来查找,有下面3个选项
-amin(表示n分钟之内被访问过的。access)
-cmin(n分钟之内被修改过文件属性的,文件属性为ls -l看到的内容。change)、
-mmin(n分钟之类被修改过文件内容的,文件内容为cat/more等命令看到的文件内容。modify)
时间与尺寸类似,-n表示n分钟之内,+n表示n分钟之前,=n表示第n分钟时。eg:find /etc -amin -5 表示查找5分钟之内被查找过的文件;
find /etc -cmin +5 表示查找5分钟之前被修改过文件属性的文件
五、-type,根据文件类型来查找
-type后面可以加f(表示文件)、d(表示目录)、l(表示软链接)3个选项
六、-inum,根据i节点来查找
经常用来查找一些文件名比较长或比较怪的文件,还可以用来查找某一个文件是否有硬链接(因为硬链接和源文件有相同的i节点号)
七、-a和 -o 可以与上来6个配合使用,用在两个选项之间,来对查找的条件做更细致的匹配。
其中-a表示and,即必须条件都满足才可以;
-o表示or,表示条件满足一个就可以
[root@zabbixagent tmp]# find . -name "*.exe" -a -type f #查找文件名以.exe结尾,并且文件类型为file的文件 ./DittoSetup_64bit_3_21_30_0.exe
八、-exec和-ok 用来对所查找到的文件或目录执行某一个操作,其中exec和ok的区别在于[-exec]在执行某一操作时不会有确认提示,但是[-ok]在执行某一个操作时会有确认的提示。
句尾的{} \;为固定的格式,需要在英文输入法小输入
# 在当前目录查找名字格式为hello.*,文件类型为file的文件,并且使用cat查看文件的内容
[root@zabbixagent sh]# find . -name "hello.*" -type f -exec cat {} \; # {}和\之间有空格 #!/bin/bash #The first program #Author: dongjie #Date:2020/02/08 echo -e "\e[1;31m hello\e[0m\e[1;32m world \e[0m"
[root@zabbixagent sh]# find . -name "backup_ect.*" -type f -exec ls -lh {} \; -rwxr-xr-x 1 root root 1.2K Feb 11 17:52 ./backup_ect.sh