设为首页 收藏本站
查看: 1217|回复: 0

[经验分享] linux 文件查找

[复制链接]

尚未签到

发表于 2018-5-21 09:49:58 | 显示全部楼层 |阅读模式
  文本查找:grep egrep fgrep

  

  文件查找:locate、find
  

  locate和find的区别
  locate有自维护的数据库(linux自建,与所有文件关联),每天linux会定时对其进行更新,而locate就在此数据库中查找,所以查询速度非常快,但是缺点也很明显,不能实时查找(比如刚装linux时这条命令是不能用的),支持的查找方式少。

  find的优点和缺点与locate相对应,find 遍历指定的路径,用以查找文件,所以当指定路径下的文件数量越多,find的查找效率越低,但是find 支持查找的格式非常多,比如根据文件名查找,元属性状态查找,还支持正则等等。

  

  locate:
  非实时,模糊匹配,查找是根据全系统文件数据库进行的;

  速度快

  #updatedb,手动生成文件数据库
  

  find:
  实时

  精确

  支持众多查找标准

  遍历指定路径中的所有文件进行查找,速度慢

  

  find  查找路径 查找标准  查找到以后的操作
  查找路径:默认为当前路径
  查找(匹配)标准:默认为指定路径下的所有文件
  处理操作:默认为显示
  

  匹配标准:
  -name ‘filename’:对文件名进行精确匹配

  文件名通配:

  *:任意长度的任意字符

  ?:单个长度的任意字符

  []:

  ...

  -iname  ’filename‘  匹配时忽略大小写
  

  -regex pattern  :基于正则表达式对文件进行匹配

  pattern必须用绝对路径包含

  

  -user  username:根据属主查找

  -group groupname:根据属组查找

  

  -uid  UID:根据uid查找

  -gid  GID:根据gid查找

  

  -nouser:查找没有属主的文件

  -nogroup:查找没有属组的文件

  

  -type:
  p:普通文件
  s:socket文件
  d:目录文件
  p:管道文件
  l:链接文件
  ...
  

  -size

  [+|-]#k:查找[大于|小于]#k的文件

  [+|-]#M:查找[大于|小于]#M的文件   

  [+|-]#G:查找[大于|小于]#G的文件
  注意:find 命令里面查找文件大小并不是精确的,它会把大于上一个数到小于下一个数之间的数当成当前数,比如我们查找等于10k的文件,那么9.2k、9.31k、10.1k等等都会被当成10k而被匹配到,而9k 11.1k等就不会

  

  组合条件:

  -a:与

  -o:或

  -not:非

  

  -mtime:根据修改(modify)时间

  -atime:访问(access)时间

  -ctime:改变(change)时间

  [+|-]#:+代表某个时间之前,-代表之后,time默认是天

  (atime和ctime区别:atime修改数据,ctime修改元属性)

  

  -mmin:

  -cmin:

  -amin:
  [+|-]#:

  与time对应,min代表分钟

  

  -perm MODE:完全匹配mode,比如755必须完全匹配755

  /MODE:部分匹配mode,只要一个匹配就可以了,比如r--rw----,只要这三个位置中其他一个被匹配到就可以了,比如可以匹配的有:r--------、rw-------等等

  -MODE:完全包含匹配,匹配的mode必须等于或者可以包含MODE,比如r--rw----,那么r--rwx---、rw-rw----等可以匹配,而---rwxrwx、rwxr-xrwx等不可以匹配

  

  find 利用正则匹配示例:
  [root@logstash ~]# find  /etc/  -regex "\<pas.*"
  [root@logstash ~]# find  /etc/  -regex "/etc/\<pas.*"
  /etc/passwd
  /etc/passwd-
  

  处理操作:
  -print:显示

  -ls:类似ls -l的格式显示匹配到的文件的详细信息

  -ok COMMAND {} \;每一次操作都需要用户确认

  -exec COMMAND {} \;

  {}代表匹配到的文件,\;是固定结束符

  

  xargs与find -exec示例
  [root@localhost ~]# find  /tmp/ -size -1M   -exec echo {} >>tmp.txt  \;
  [root@localhost ~]# cat tmp.txt
  /tmp/mysql.sock
  /tmp/sess_e538a6cd81b0fed9d5c49f1b2f84dd80
  /tmp/sess_c1f3bd3446ca4407d9a2a05bb4897030
  [root@localhost ~]# find  /tmp/ -size -1M  |xargs echo {} >>tmp1.txt ;
  [root@localhost ~]# cat tmp.txt
  /tmp/mysql.sock
  /tmp/sess_e538a6cd81b0fed9d5c49f1b2f84dd80
  /tmp/sess_c1f3bd3446ca4407d9a2a05bb4897030
  [root@localhost ~]#
  

  示例:

  1、查找/var下属主为root并且属组为mail的所有文件
  find /var/  -user root  -group mail
  

  2、查找/usr不属于root、bin或student的文件
  find  /usr/ -not -user root -o -not -user bin -o -not  -user student
  find  /usr/ -not \(-user root -o  -user bin -o -user student \)

  

  3、查找/etc下最近一周内内容修改过且不属于root以及student用户的文件
  find /etc/ -mtime -7  -not -user root -a  -not  -user student   

  find /etc/ -mtime -7 -not \(-user root -o -user student\)   

  

  4、查找当前系统上没有属组或属主且最近1天内曾被访问过的文件、并将其属主属组修改为root
  find  /  -nouser -o  -nogroup -a -ctime -1 -exec chown  root:root {} \;
  

  5、查找/etc/下大于1M的文件,并写入到/tmp/1.txt中
  find  /etc/  -size +1M  -exec echo {} >>/tmp/1.txt \;
  

  6、查找/etc/所有用户都没有写权限的文件,并显示其详细信息
  find  /etc/ -not -perm /222 -ls
  注意这里是用/222  而不是-222

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-478504-1-1.html 上篇帖子: Linux链接概念 下篇帖子: Linux根目录结构
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表