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

 

posted @ 2020-02-12 18:05  Angus_he  阅读(215)  评论(0编辑  收藏  举报