【Linux学习013】文件查找

一、文件查找命令分类

    1.locate命令

        该命令是非实时的,模糊匹配,查找是根据全系统文件数据库进行的,速度比较快;可以自己定义更新数据库的策略,也可以使用updatedb命令手动生成或者更新文件数据库;该命令不经常使用。

    2.find命令

        该命令是实时的,精确查找,遍历所有目录中的所有文件完成查找,速度比较慢,但是支持众多的查找标准,是最经常使用的文件查找命令。

    3.find命令的使用格式:

find 查找路径 查找标准 查找到以后的处理动作

    查找路径:默认为当前目录

    查找标准:默认为指定路径下的所有文件

    查找到以后的处理动作:默认为打印到屏幕

二、查找标准

-name 'FILENAME'

该命令对文件名做精确匹配,可以使用文件名通配符

* : 任意长度的任意字符

? : 长度为1的任意字符

[] : 指定范围内的任意字符

-iname 'FILENAME' 文件名匹配时不区分大小写
-regex PATTERN 基于正则表达式进行文件名匹配
-user USERNAME
根据属主查找
-group GROUPNAME
根据数组查找
-uid UID
根据UID查找
-gid GID 根据GID查找
-nouser
查找没有属主的文件
-nogroup 查找没有数组的文件
-type
f:普通文件
d:目录
c:字符设备文件
b:块设备文件
l:链接文件
p:管道设备文件
s:套接字文件
-size

[+|-]#k:按照k为单位查找文件

[+|-]#M:按照M为单位查找文件
[+|-]#G:按照G为单位查找文件
-mtime [ + | - ]#
modify time,文件最后一次修改时间,单位是天
-ctime [ + | - ]# change time,文件最后一次改变时间,单位是天
-atime [ + | - ]# access time,文件最后一次访问时间,单位是天
-mmin [ + | - ]#
同上,单位是分钟
-cmin [ + | - ]# 同上,单位是分钟
-amin [ + | - ]# 同上,单位是分钟
-perm MODE
精确匹配
-perm -MODE 只有文件权限完全包含此MODE时才符合条件
-perm /MODE 任意一位匹配即满足条件

三、组合条件

-a -and 与条件
-o -or 或条件
-not 非条件

四、处理动作

- print 显示
-ls
详细显示每一个文档的信息

-ok COMMAND {} \;

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

五、文件查找练习题

    1.查找/var目录下属主为root并且属组为mail的所有文件

find /var -user root -a -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及kdyzm用户的文件

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

        或者

find /etc -mtime -7 -a -not -user root -a -not -user kdyzm

    4.查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root

find / -mtime -1 -a \( -nouser -o -nogroup \) -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




你可能感兴趣的:(linux,bash,find)