Linux中文件查找可用,locate和find 。 以下是查询网络资料和man find后自己整理的文章
locate : 非实时,模糊匹配查找是根据全系统文件数据库进行的。如果要手动生成系统数据库,执行命令updatedb。
优点: 执行速度比较快
缺点:非实时,只能模糊匹配查找
find :实时 精确精确匹配查找 支持众多查找标准 遍历指定目录中的所有文件完成查找,速度比较慢
格式 : find 查找路径 查找标准 查找到以后的处理运作
查找路径:默认为当前路径
查找标准:默认为指定路径下的所有文件
处理运作:默认为显示打印
匹配标准:
-name ‘FILENAME’:对文件名作精确匹配
#### find /tmp -name test 如查找tmp目录下的test文件
-iname 'FILENAME': 文件名匹配时不区分大小写
-regex pattern :基于正则表达式进行文件名匹配
-user USERNAME :根据文件宿主查找
#### find /tmp -user root 查找tmp目录下属主是root的文件
-group GROUPNAME:根据宿主查找
#### find /tmp -group group1 查找tmp目录下属组是group1的文件
-uid UID :根据UID查找
-gid GID :根据GID查找
##### 上面两个选项主要用于,当属主和属组被删除后,根据uid 和gid查找
-nouser :查找没有属主的文件
-nogroup:查找没有属组的文件
##### 上面两个选项时针对一些没有属主和属组的文件,查找出,可将权限给予root,这样文件就不会被其他用户操作的风险
-type :根据文件类型查找
f: 普通文件
d:目录
c:块设备
#### find /tmp -type d 查找tmp下类型为目录的文件
-size :可用+-,+表示大于 -表示小于
##### find /tmp -size 5M 查找tmp下文件大小为5M的文件(注:范围在4-5M之间的所有文件)
##### find /tmp -size +5M 查找tmp下文件大小大于5M的文件
##### find /tmp -size +5M 查找tmp下文件大小小于5M的文件
组合条件: 默认为-a
-a 与
-o 或
-not 非
##### find /tmp -not -user root -a not -group root 查找/tmp下所有属主非root和属组非root的文件
-mtime 修改时间
-ctime 状态改变时间
-atime 执行时间
+ - :例
+5 表示至少5天
-5 表示5天内
5 表示精确5天
-mmin
-cmin 分钟,用法跟time一样
-amin
-perm mode 每一位权限都精确匹配
/mode 任意一位匹配既满足
-mode 文件权限能完全包含此MODE时才符合条件
ACTION:
-print:显示 默认
-ls :类似ls -l 的形式显示每一个文件的详细信息
-ok COMMAND {} \; 每一次操作都需要用户确认
-exec COMMADN {} \; 不需要用户确认,直接执行
注:find 命令在执行多个条件查找时 要将选项用单引号,不然系统会报错
例:
find ./ -name '*.gz' -o -name '*.tar' -o -name '*.sh'
例题:
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
阅读(1396) | 评论(0) | 转发(0) |