文件查找find
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文件查找find相关的知识,希望对你有一定的参考价值。
文本查找的工具有:grep,egrep,fgrep
文件查找:locate,find;locate filename是非实时模糊查找filename,它是根据数据库的内容查找,优点是速度快,缺点是不能找出最新的文件,需要手动使用updatedb命令更新数据库文件。find是实时精准查找文件,他会遍历指定目录下的所有文件,缺点是速度慢。
1.find的用法
find 查找路径 匹配条件 找到后的处理动作
查找路径:默认是当前目录
匹配条件:默认是指定目录下的所有文件
-name ‘filename’:查找目录下文件名为filename的文件,-iname是不区分大小写,可以使用通配符:
* :任意长度的任意字符
[ ] :中括号内的任意一个字符
? :任意一个字符
-regex PATTERN :基于正则查找文件。
-user username:查找属主是username的文件。
-group groupname :查找属组是groupname 的文件。
同理:
-nouser :查找没有属主的文件。
-nogroup:查找没有属组的文件。
-gid GID :查找为GID的文件。
-uid UID :查找为UID的文件。
-type :查找文件的属性,如
-f 普通文件
-d 目录
-c 字符文件
-b 块文件
-l 连接文件
-p 管道文件
-s socket文件
-size :按文件的大小查找,如 + 100M 查找100M以上的文。件,-100M查找100M以内的文件,需要主要的是 -size 10M 表示查找的的文件大小在9-10M之间,取等,单位有k M G等。
-mtime,-ctime,-atime 后面接 [+ | -]时间,表示查找多少天以前或以内的修改过的时间,改变过属性的时间,访问过的时间。
-perm MODE(或 -MODE)精确匹配到的,/MODE 只要匹配到任意一位权限位即可,如 -perm 755 要文件的权限与755一致才匹配到,-perm /755只要文件的任意一个权限与其中一个匹配即可。
可以组合条件, -a -o -not
找到后的处理动作:默认是打印到屏幕
-print :显示(默认)
-ls :雷同ls -l
-ok COMMAND {} ; :每次操作前询问
-exec COMMAND {} ;同上,不询问
练习:1、查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
2、查找/usr目录下不属于root,bin,和student的文件;
find /usr -not -user root -a -not -user bin -a -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 -o -user student )
find /etc -mtime -7 -not -user root -a -not -user student
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / ( -nouser -o -nogroup ) -a -atime -1 -exec chown root:root {} ;
{} 表示查找出来的文件
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls
1、查找/var目录下属主为root并且属组为mail的所有文件;
find /var -user root -group mail
2、查找/usr目录下不属于root,bin,或student的文件;
find /usr -not -user root -a -not -user bin -a -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 -o -user student )
find /etc -mtime -7 -not -user root -a -not -user student
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
find / ( -nouser -o -nogroup ) -a -atime -1 -exec chown root:root {} ;
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
find /etc -size +1M >> /tmp/etc.largefiles
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
find /etc -not -perm /222 -ls
以上是关于文件查找find的主要内容,如果未能解决你的问题,请参考以下文章