感谢支持
我们一直在努力

Linux基础知识之查找和处理文件which&locate&find

Linux基础知识之查找和处理文件which&locate&find

查找和处理文件常用工具:which、locate、find,当然还有图形化工具。

一、which 仅查寻系统当中可执行的文件,

[root@desktop23 ~]# which passwd    没有查寻到/etc/passwd

一般使用查寻命令的绝对路径。建议在写脚本时,使用它来查寻绝对路径。

二、locate 基于系统数据库查询。

★ 查询路径(指向系统中的文件)的预构建数据库

•  数据库必须由管理员进行更新

•  将搜索完整路径,而不是只搜索文件名

★ 只能搜索用户具有读取和执行权限的目录

[student@desktop23 ~]$ locate iptables.h

[student@desktop23 ~]$ locate passwd    (它是一个模糊查找,速度很快)

[student@desktop23 ~]$ touch xmws.txt

[student@desktop23 ~]$ locate xmws.txt  查不到!

[root@desktop23 ~]# updatedb            即刻更新数据库。

[student@desktop23 ~]$ locate xmws.txt

每天都要手动更新系统数据库吗?

[root@desktop23 ~]# vim /etc/cron.daily/mlocate.cron 凌晨4点02分。

★ 有用的选项

-i 用于执行不区分大小写的搜索

-n X 仅列出前 X 个匹配项

[student@desktop23 ~]$ locate -n 5 passwd  仅搜索前5个匹配项

-e dir1,dir2… 在指定的目录中搜索

三、find [dir1 …] [criteria… 组] [action…]

可以针对找到的文件执行命令

只能搜索用户具有读取和执行权限的目录

1.实时搜索,不用基于数据库

速度较慢,但比locate更准确

如果未给定任何起始目录,则会使用CWD

如果未给定任何条件,则所有文件均匹配。如:

[root@desktop23 ~]# find /

[root@desktop23 ~]# find .

2.基本示例

[root@desktop23 ~]# find -name snow.png

在当前目录中搜索名为 snow.png 的文件

[root@desktop23 ~]# find -iname snow.png

在当前目录中搜索(不区分大小写)名为:

snow.png、Snow.png、SNOW.PNG等文件

[root@desktop23 ~]# find / -name ‘*.txt’

在系统的任意位置搜索以.txt结尾的文件

通配符应当始终加引号,以避免出现异常结果

[root@desktop23 ~]# find /etc -name ‘*pass*’

在 /etc/ 中搜索在其名称中包含 pass 的文件

[root@desktop23 ~]# find /home -user joe -group joe

在 /home/ 中搜索由用户 joe 和组 joe 所有的文件。

默认情况下,都是逻辑and关系,2者都必须符合。

3.也可以用 OR 连接或者用 -o 或 -not 求反

也可以使用括号来确定逻辑顺序,但在 bash中必须忽略

[root@desktop23 ~]# find -user joe -not -group joe

[root@desktop23 ~]# find -user joe -o -user jane    或者关系

[root@desktop23 ~]# find -not \( -user joe -o -user jane \)

拥有人不是joe或者不是jane

4.可以按文件拥有人名称或 ID  搜索

[root@desktop23 ~]# find / -user student -o -uid 500

5.可以按文件的权限搜索

[root@desktop23 ~]# find -perm 755

[root@desktop23 ~]# find -perm +222

如果任意一个人可以写入,则匹配

[root@desktop23 ~]# find -perm -222

如果每个人都可以写入,则匹配

[root@desktop23 ~]# find -perm -002

如果其他人可以写入,则匹配

6.find和数字条件

[root@desktop23 ~]# find -size 10M    大小等于10MB的文件

[root@desktop23 ~]# find -size +10M  大小超过10MB的文件

[root@desktop23 ~]# find -size -10M  大小不足10MB的文件

还可以使用其他修饰符,例如K代表KB,G代表GB等

7.find和文件访问时间

-atime,上次读取文件时

-mtime,上次更改文件数据时

-ctime,上次更改文件数据或元数据时

这3个时间很重要,特别是在集群应用中。如:

1.脑分裂;

2.web服务器noatime,可提高服务器性能10%

给定值以天数为单位

[root@desktop23 ~]# stat test.txt

[root@desktop23 ~]# find /tmp -ctime +10 文件更改超过10天前

可以使用分钟值

-amin

-mmin

-cmin

[root@desktop23 ~]# find /etc –amin -60  一小时以内。

8.find可以针对找到的文件执行命令

命令前必须带有 -exec 或 -ok

-ok 将在对每个文件执行操作之前提示

命令必须以 Space\;结尾

可以使用{}作为文件名占位符

示例列举:

RHCE_RHEL6_135 U4.0 查找和处理文件which&locate&find

备份配置文件,添加 .orig 扩展名

[root@desktop23 ~]# find -name‘*.conf’-exec cp {} {}.orig /;

提示删除 Joe 的超过3天的tmp文件

[root@desktop23 ~]# find /tmp -ctime +3 -user joe -ok rm {} \;

修正主目录中其他人可写入的文件

[root@desktop23 ~]# find ~ -perm -002 -exec chmod o-w {} \;

生成 /home/ 中所有目录的 ls –l  样式列表

[root@desktop23 ~]# find /home -type d -ls

查找以.sh结尾但任何人都无法执行的文件。对于每个文件,询问是否将其变为可由每个人执行的文件

[root@desktop23 ~]# find -not -perm +111 -name ‘*.sh’ -ok chmod 755 {} \;

赞(0) 打赏
转载请注明出处:服务器评测 » Linux基础知识之查找和处理文件which&locate&find
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏