1、文件搜索,内置的的命令是find

用法: find [查找路径] 寻找条件 操作

默认路径为当前目录;默认表达式为 -print

2、主要参数:

-name  匹配名称 
-perm  匹配权限(mode为完全匹配,-mode 为包含即可) 
-user   匹配所有者 
-group  匹配所有组 
-mtime -n +n  匹配修改内容的时间(-n指 n天以内,+n指 n天以前) 
-atime -n +n  匹配访问文件的时间(-n指 n天以内,+n指 n天以前) 
-ctime -n +n  匹配修改文件权限的时间(-n指 n天以内,+n指 n天以前) 
-nouser  匹配无所有者的文件 
-nogroup  匹配无所有组的文件 
-newer f1 !f2  匹配比文件 f1新但比 f2旧的文件 
--type b/d/c/p/l/f 匹配文件类型(后面的字母参数依次表示块设备、目录、字符道、链接文件、文本文件) 
-size 匹配文件的大小(+50KB 为查找超过 50KB 的文件,而-50KB小于50KB的文件) 
-prune  忽略某个目录 
-exec …… {};  find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和;之间的空格,{}表示查找出来的没一个文件,结尾必须是";"

3、按名字查找

在/opt目录下查找elasticsearch的配置文件
[root@bigdata-senior01 ~]# find /opt -name "elastic*.yml" /opt/elasticsearch-6.5.1/config/elasticsearch.yml

查找过程中出现“权限不够”的提示:
[xu.dm@bigdata-senior01 ~]$ find /opt -name "elastic*.yml"
find: ‘/opt/modules/hadoop-3.1.0/logs/userlogs/application_1527345950418_0001_DEL_1527434392341’: 权限不够
find: ‘/opt/data/tmp/dfs/data’: 权限不够
find: ‘/opt/data/tmp/nm-local-dir/usercache_DEL_1527434391968/root’: 权限不够
find: ‘/opt/data/tmp/nm-local-dir/nmPrivate’: 权限不够
find: ‘/opt/data/tmp/nm-local-dir/usercache/hadoop’: 权限不够
/opt/elasticsearch-6.5.1/config/elasticsearch.yml

避免因为权限不够的提示,把查找错误提示转移到特定的目录中去。
[xu.dm@bigdata-senior01 ~]$ find /opt -name "elastic*.yml" 2> /dev/null
/opt/elasticsearch-6.5.1/config/elasticsearch.yml

按名字忽略大小写搜索
[root@vmstation ~]# find /etc -iname "SELINUX"
/etc/sysconfig/selinux
/etc/selinux


4、按文件大小查找

查找/home下大于10M的文件
[root@bigdata-senior01 ~]# find /home -size +10M /home/data/kafka_2.12-2.0.0.tgz
查找小于1k的文件
[root@bigdata-senior01 ~]# find /home -size -1k

5、与,或条件,and,or

[root@bigdata-senior01 ~]# find /opt -name "*yml" -and -name "elastic*"
/opt/elasticsearch-6.5.1/config/elasticsearch.yml

find / -user fred -or -user georg

6、其他

  find / -amin -10 # 查找在系统中最后10分钟访问的文件
  find / -atime -2 # 查找在系统中最后48小时访问的文件
  find / -empty # 查找在系统中为空的文件或者文件夹
  find / -group cat # 查找在系统中属于 groupcat的文件
  find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
  find / -mtime -1 #查找在系统中最后24小时里修改过的文件
  find / -nouser #查找在系统中属于作废用户的文件
  find / -user fred #查找在系统中属于FRED这个用户的文件

在find命令中还可以使用“非”的关系来查找文件,如果我们要在/tmp目录中查找所有不属于panda的文件,使用一个简单的
  find /tmp ! -user panda

  查找并显示文件的方法
find / -name "httpd.conf" -ls

find   .   -perm -007   -exec ls -l {} ;   #查所有用户都可读写执行的文件同-perm 777
find   .   -name   "[a-z][a-z][0–9][0–9].txt"    -print   #查以两个小写字母和两个数字开头的txt文件
find   /home   -uid   +501                  列出/home目录内用户的识别码大于501的文件或目录
find   /home   -gid 501                   列出/home内组id为501的文件或目录

7、exec参数,{}表示查找出来的没一个文件,结尾必须是”;”

在/opt目录下查找文件,并拷贝到但前目录下
[root@bigdata-senior01 ~]# find /opt -name "elastic*.yml" -exec cp {} ./ ;
找到文件并用ls -lh显示
[root@bigdata-senior01 ~]# find /opt -name "*.conf" -exec ls -lh {} ; -rw-r--r--. 1 hadoop hadoop 1.1K 3月 30 2018 /opt/modules/hadoop-3.1.0/share/hadoop/yarn/yarn-service-examples/httpd/httpd-proxy.conf -rw-r--r--. 1 hadoop hadoop 1009 3月 30 2018 /opt/modules/hadoop-3.1.0/share/hadoop/yarn/yarn-service-examples/httpd-no-dns/httpd-proxy-no-dns.conf