文件查找
grep: 文件内容过滤
find: 文件查找,针对文件名
一、命令文件
which ls //从 PATH 环境变量 (echo $PATH)
[[email protected] ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/htop/bin/:/root/bin
二、任意文件
(一). locate (查询的数据库: /var/lib/mlocate/mlocate.db)
计划任务:每天自动更新数据库 /etc/cron.daily/mlocate.cron
手动更新数据库:updatedb 在查找之前,先要更新数据库
locate ifcfg-eth0
locate ifcfg-enp0s25
(二)find(尽量缩小找的范围)
find [options] [path...] [expression] [action]
1.按文件名:
[[email protected] ~]# find /etc -name "ifcfg-eth0"
[[email protected] ~]# find /etc -iname "ifcfg-eth0" //-i 忽略大小写
[[email protected] ~]# find /etc -iname "ifcfg-eth*" //借助通配符
2.按文件大小:
[[email protected] ~]# find /etc -size +5M //大于 5M
[[email protected] ~]# find /etc -size 5M //等于 5M
[[email protected] ~]# find /etc -size -5M //小于 5M
[[email protected] ~]# find /etc -size +5M -ls //-ls 找到的处理动作
3.指定查找的目录深度:
-maxdepth levels
-mindepth levels
[[email protected] ~]# find / -maxdepth 3 -a -name "ifcfg-eth0"
4.按时间找(atime,mtime,ctime):
[[email protected] ~]# ll -t /etc |head 查看最新修改的文件
-rw-r--r--. 1 root root 1309 12月 16 10:01 tpvmlp.conf
-rw-r--r--. 1 root root 239 12月 16 10:01 resolv.conf
-rw-r--r--. 1 root root 576 12月 16 10:01 mtab
[[email protected] ~]# ll -t /etc |tail 最旧的文件
-rw-r--r--. 1 root root 233 1月 12 2010 printcap
-rw-r--r--. 1 root root 6455 1月 12 2010 protocols
-rw-------. 1 root root 122 1月 12 2010 securetty
[[email protected] ~]# find /etc -mtime +5 //修改时间超过 5 天(120小时)
[[email protected] ~]# find /etc -mtime 5 //修改时间等于 5 天
[[email protected] ~]# find /etc -mtime -5 //修改时间 5 天以内
5.按文件属主、属组找:
[[email protected] ~]# find /home -user jack //属主是 jack 的文件
[[email protected] ~]# find /home -group hr //属组是 hr 组的文件
[[email protected] ~]# find /home -user jack -group hr //属主是jack,属组是group
[[email protected] ~]# find /home -user jack -a -group hr //和
[[email protected] ~]# find /home -user jack -o -group hr //或
[[email protected] ~]# find /home -nouser
[[email protected] ~]# find /home -nogroup
[[email protected] ~]# find /home -nouser -o -nogroup
6.按文件类型:
[[email protected] ~]# find /dev -type f //f 普通
[[email protected] ~]# find /dev -type d //d 目录
[[email protected] ~]# find /dev -type l //l 链接
[[email protected] ~]# find /dev -type b //b 块设备
[[email protected] ~]# find /dev -type c //c 字符设备
[[email protected] ~]# find /dev -type s //s 套接字
[[email protected] ~]# find /dev -type p //p 管道文件
7.按文件权限:
[[email protected] ~]# find . -perm 644 -ls //当前目录下查找权限是644的
[[email protected] ~]# find . -perm -644 -ls //当前目录下查找权限是包含644的
[[email protected] ~]# find . -perm -600 -ls // 只要所有者有读写就可以
[[email protected] ~]# find . -perm -222 -ls //全局可写
[[email protected] ~]# find /usr/bin /usr/sbin -perm -4000 -ls //包含 set uid
[[email protected] ~]# find /usr/bin /usr/sbin -perm -2000 -ls //包含 set gid
[[email protected] ~]# find /usr/bin /usr/sbin -perm -1000 -ls //包含 sticky
8.按正则表达式:
-regex pattern
[[email protected] ~]# find /etc -regex ‘.ifcfg-eth[0-9]‘
. 任意多个字符
[0-9] 任意一个数字
[[email protected] ~]# find /etc -regex ‘.ifcfg-enp0s25‘
/etc/sysconfig/network-scripts/ifcfg-enp0s25
[[email protected] ~]# find /etc -regex ‘.ifcfg-enp0s[0-9]+‘
/etc/sysconfig/network-scripts/ifcfg-enp0s25
9.找到后处理的动作 ACTIONS: (默认动作-print)
-ls
-delete
-exec 后面跟自定义的 shell 命令
-ok 后面跟自定义的 shell 命令
[[email protected] ~]# find /etc -name "ifcfg" -print[[email protected] ~]# find /etc -name "ifcfg" -ls
[[email protected] ~]# find /etc -name "ifcfg" -exec cp -rvf {} /tmp \; //{}表示前面查找到的结果
[[email protected] ~]# find /etc -name "ifcfg" -ok cp -rvf {} /tmp \; //+v查看效果,OK会有提示
[[email protected] ~]# find /etc -name "ifcfg" -exec rm -rf {} \;
[[email protected] ~]# find /etc -name "ifcfg" -delete
扩展知识:find 结合 xargs
[[email protected] ~]# find . -name "yang*.txt" |xargs rm -rf / /参数的传递xargs
[[email protected] ~]# find /etc -name "ifcfg-eth0" |xargs -I {} cp -rf {} /var/tmp
原文地址:http://blog.51cto.com/8450442/2331167