linux下查找文件命令使用情况,linux中常用的文件查找命令--find命令的用法

之前我们学习了grep、sed等命令,这些命令都是用于作为文本查找的。但是Linux作为一个一切皆文件的操作系统,就需要我们知道每个文件的位置。那么多的文件不可能我们每一个都记得到它的路径,这种情况下我们就需要用到文件查找命令来查找我们需要的文件。

文件查找的命令有两种,一种是locate命令,它可以实现快速查找文件,是在全系统文件的数据库中来查找的,使用模糊匹配,结果就是出现了许多我们没有相匹配的文件。这时我们就要用到find命令来精确查找文件,find命令是遍历指定目录中的所有文件完成查找,所以说find命令的查找速度是硬伤,这是没办法改变的。

linux的系统是前一天晚上会自动更新系统的文件数据库,结果就是使用locate命令来查找今天创建的文件会查找不到,这种情况下我们可以用updatedb命令来手动生成文件数据库。就相当于手机里昨天的文件到了晚上会自动备份,而今天的文件我们想要查找的话就要手动去备份一下,然后才能去查看今天创建的文件。

find命令的使用方法为:find 查找路径 查找标准 查找后的运作查找路径默认为当前路径,查找标准默认为指定路径下的所有文件,处理运作默认为显示查找结果。

查找路径这个好理解,就是你要查的文件大概所处的位置。我们来说一说查找文件的匹配标准。

1、find命令的匹配标准

使用find命令的时候,find命令也支持组合条件:

-a:与

-o:或

-not:非

(1) -name 'FILENAME':对文件名做精确匹配

文件名通配:

*:任意长度的任意字符

?:任意单个字符

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

-iname 'FILENAME': 文件名匹配时不区分大小写

(2) -regex PATTERN:基于正则表达式进行文件名匹配

(3) 对于用户的属主和属组进行匹配

-user USERNAME:对属主精确匹配

-group GROUPNAME:对属组精确匹配

例如:

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

find /var -user root -group mail

2、查找/usr目录下不属于root,bin,或student的文件;

find /usr -not -user \( root -o bin -o student \)

-uid UID:根据uid查找

-gid GID:根据gid查找

-nouser:查找没有属主的文件

-nogroup:查找没有属组的文件

例如:查找当前系统上没有属主和属组的文件

find / \( -nouser -o -group \)

(4) 根据文件的类型进行匹配

-type:文件类型

f:普通文件

d:目录文件

c:字符设备文件

b:块设备文件

l:连接文件

p:命令管道文件

s:套接字文件

(5) 根据文件大小进行匹配

-size:根据大小查找

[+|-]#k:    +:大于#k的文件   -:小于#k的文件

#M:

#G:

根据文件大小匹配时,匹配出来的结果会是(#-1)M至#M之间的文件,而不是#M大小的文件

例如:查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;

find /etc -size +1M >> /tmp/etc.largefiles

(6)使用时间匹配文件:

-mtime:修改了的时间

-ctime:改变了的时间

-atime:访问了的时间

[+|-]#: + #天之前访问过  - #天之内访问过(用法同文件大小匹配)

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

find / \( -nouser -o -group \) -a -atime -7 -exec chown root:root {} \;

(7) 使用文件权限来查找文件

-perm MODE:权限查找

/MODE:任意一位权限满足条件即可

-MODE:文件权限能完全包含此MODE时才能显示

例如:查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;

find /etc -not -perm /222 -ls

这条命令我们要来分析一下,/222和-222在find命令下搜索出来的文件是不一样的。/222表示只要有其中一个用户拥有写权限就可以匹配的到。-222表示只要有一个用户没有写权限就不会被匹配。而题目要求的是没有写权限的用户,前边我们加了-not,后边就要用/222而不是-222。

2、查找到文件后的动作

动作:

-print:显示

-ls:类似ls -l的形式显示每一个文件的详细

-ok COMMAND {} \;每一个操作都需要用户确认(查找到的文件进行ok后的COMMAND命令时每一次都要询问用户的意见)

-exec COMMAND {} \;不需要用户确认

-xargs

有了find命令,我们查找文件就变得方便了起来,我们还可以利用find命令来查看最近是否有用户修改了系统文件,这样就可以更好的保证我们系统的安全性。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值