文件查找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 后面接 [+ | -]时间,表示查找多少天以前或以内的修改过的时间,改变过属性的时间,访问过的时间(-min,-cmin,amin的单位是分钟)。
                        -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

猜你喜欢

转载自blog.51cto.com/13803030/2147426