Linux之find命令使用 ---Linux学习笔记(4)

Linux下find命令用于搜索文件,并执行相关操作。它是一个很强大的查找命令,缺点是查找速度比较慢,因为它不同于whereis,locate这些直接从数据库中查找,而是从硬盘上查找,因此耗费时间较多。

find命令很强大,同时它的选项也很复杂,因此需要我们仔细去学习。find格式大概如下:

find [pathname] [option] [action]

pathname: find命令所查找的目录路径。例如⽤用.来表⽰示当前目录,用/来表⽰示系统根目录。
其他参数我们在下面说明:

1. 与时间有关的参数,-atime,-ctime,-mtime,下面我们举例说明,以下n代表数字:

-mtime n 在n天前的“一天之内”被更改过的文件

-mtime -n 列出在n天前(不含n天本身)被更改过的文件

-mtime +n 列出在n天内(不含n天本身)被更改过的文件

-newer file file为文件名,列出比file还要新的文件名(可用于分辨两文件新旧关系

看上去有点晕,我们结合以下图来理解:

这里写图片描述

比如说,我们想要列出过去系统24小时内有改动(mtime)的文件:

此时,我们以现在为基准,想要获取0-1这个区间的修改的文件,因此结合上图,不难得到

find -mtime 0

注意此时0代表现在的意思,列出24小时内有改动的文件,可以换种方式理解,就是0天前的24小时之内,因此得到如上命令,如果3天前的24小时内呢?很简单,只需要将0改为3

2. 与用户或者用户组名相关的参数:

-user name name为用户名

-group name name为用户组名

-nouser 寻找文件所有者不在/etc/passwd的人

-nogroup 寻找文件所在用户组不在/etc/group的文件

简单看几个例子:

列出当前目录下用户名为xuyang的文件;(注意到没有dttt,因为它用户为root)

这里写图片描述

列出系统中下不属于任何人的文件;

find ./ -nouser

3. 与文件权限或者名称有关的参数:

这里写图片描述

这里写图片描述

关于-perm参数,多用于按文件权限模式来查找文件,用的比较常见。

我们知道Linux下文件权限一般如下:

usergroupothers
rwxrwxrwx

-perm后的mode就是匹配权限,比如说查找某个目录权限为755的文件,此时可用find (某个路径)-perm 755。

-rwxrwxrwx  1 root root 0  69 20:30 1.txt   777
-rwxrwxr-x  1 root root 0  69 18:58 2.txt    775
-rwxr-xrwx  1 root root 0  610 00:10 3.txt   757
-r-xrwxrwx  1 root root 0  610 00:10 4.txt   577
-r-xr-xrwx  1 root root 0  610 00:10 5.txt    557
-r-xr-xr-x  1 root root 0  610 00:10 6.txt     555
[root@test test1]# find .  -perm  700   //没有这个权限的文件
[root@test test1]# find .  -perm  -700
.
./3.txt
./1.txt
./2.txt
[root@test test1]# find .  -perm  -712   //2.txt主要是-rwxrwxr-x中的其他用户没有w权限
./3.txt
./1.txt
[root@test test1]# find -perm 755  //也没有这个文件

find -perm +222 //找u或者g或者o三个中,至少一个有可写权限的
find -perm -222 //找u,g和o三个中都有可写的权限文件
find -perm -002 //找权限至少o可以写的
find -perm +222 // u g o 有一个可写就匹配
find -perm -222 // u g o 全都可写才匹配

4. 其他一些常用操作

这里写图片描述

其中-print参数是默认的,也就是说,比如我们想把当前目录下的为目录的文件打印出来
find -type d -print 和 find -type d 其实是一样的

而对于-exec则用于进行额外的操作,比如在上面基础上,我们想把查询到的目录文件再进一步操作,如查询各自目录的文件
find -type d -exec ls {} \;

当然,我们还可以借助通配符*寻找文件名,举例来说,你想查找某个目录下文件名包含test的文件,就可以这么写:

这里写图片描述

最后结合以上所讲,写几个例子:

  1. 查找/根目录下⽂文件名为test的目录
    find / -name test

  2. 查找当前所有目录并排序
    find -type d -exec ls -ld {} \;

  3. 查找所有目录名称中按照”.log”结尾的目录
    find / -name ‘*.log’

  4. 查找系统中最近5分钟访问的目录
    find / -amin -5 -type d

  5. 查找系统中最近5天访问的文件
    find / -mtime -5

  6. 查找当前目录下所有权限为755的⽂文件,并设置成777
    find -perm 755 -exec chmod 777 {} \;

  7. 查找文件大小为10k的⽂文件,并删除
    find -size 10k -exec rm -f {}\;

更多可以点击find使用用例

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值