Linux使用find命令查找文件

简介

https://zhuanlan.zhihu.com/p/550924132

  Linux系统中的find命令是一种功能丰富的工具,可以帮助我们快速查找文件或目录。本教程将向您展示如何使用Linux find命令来查找您需要的文件。
  在使用Linux find命令之前,您需要了解其基本语法。Linux find命令的基本语法如下:

find [path] [expression]

  其中,path表示要查找的目录路径,expression表示查找表达式,用于指定要查找的文件类型、名称、大小等条件。

  find命令的作用是在目录层次结构中搜索文件所在的位置,此命令可以使用的参数很多,同时支持正则表达式,结合管道符后能够实现更加复杂的功能,是必须掌握的命令之一。
  通常find是从根目录开始全盘搜索,不同于其他几个搜索文件的命令,find搜索时会消耗较多的系统资源,在服务器负载较高的时候,不建议从根目录开始搜索。

语法格式

语法格式:find 【路径】【参数】

SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path…] [expression]

基本参数

此命令的常用参数有以下这些,以表格形式显示:

-name匹配文件的名称
-user匹配用户的文件(所有者)
-group匹配组的文件(所有组)
-mtime -n +n匹配修改内容的时间,-n表示n天之内,+n表示n天之前
-atime -n +n匹配访问文件的时间,-n表示n天之内,+n表示n天之前
-ctime -n +n匹配改动文件的时间,-n表示n天之内,+n表示n天之前
-perm匹配文件权限
-size匹配文件的大小,单位k M,+nk表示查找大于n的文件,-nk表示查找小于n的文件
-exec { } ;后面可跟用于进一步处理搜索结果的命令
-prune忽略某个目录
-nouser匹配不是这个用户的文件
-nogroup匹配不是这个组的文件
-type匹配文件类型(b d c p f l)

其中,-type参数的文件类型:

b:块设备文件
d:目录文件
c:字符设备文件
p:管道文件
f :文本文件
l :链接文件

参考实例

根目录下文件名称的例子

find / -name "000"

上述命令将在服务器的根目录中查找包含"000"的文件或目录。

在root/data目录下搜索*.txt的文件名

[root@localhost ~]# find /root/data -name "*.txt"
/root/data/1.txt
/root/data/2.txt
/root/data/3.txt
/root/data/4.txt
/root/data/5.txt

在/var/log目录搜索指定后缀的文件 , -iname表示不区分大小写的的文件名称

[root@localhost ~]# find /var/log -type f -iname "*.log"
/var/log/tuned/tuned.log
/var/log/audit/audit.log
/var/log/anaconda/anaconda.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
/var/log/anaconda/packaging.log
/var/log/anaconda/storage.log
......

在/var/log目录搜索指定后缀不是.log的文件

[root@localhost ~]# find /var/log -type f ! -name ".log" | wc -l
71

指定路径下特定类型的例子

除了查找特定关键词的文件或目录外,您还可以使用Linux find命令的其他选项来进一步细化您的搜索。
要查找特定类型的文件,您可以使用-type选项。

find /path/to/search -type f -name "*.txt"

  在上述命令中,/path/to/search是您要查找的目录路径,-type f表示要查找的是文件类型,-name "*.txt"表示要查找以.txt结尾的文件。

指定路径、文件类型特定文件名称的例子

find /path/to/search -type f -name "file.txt"

指定路径、文件类型特定文件大小的例子

要查找特定大小的文件,可以使用-size选项。例如,要查找大小为10MB的文件,可以使用以下命令:

find /path/to/search -type f -size 10M

在/etc目录下搜索大于5M,小于10M的文件

[root@localhost ~]# find /etc -type f -size +5M -and -size -10M 

指定路径、文件类型 查找近期修改时间的例子

如果您想查找近期修改的文件,可以使用-mtime选项。例如,要查找近期7天内修改过的文件,可以使用以下命令:

find /path/to/search -type f -mtime -7

搜索一天以内最后修改时间的文件;并将文件删除
使用-exec参数将前面的文件进行处理,也可使用find配合xargs将文件进行删除。

[root@localhost ~]# find /root/data -mtime -1 
/root/data
/root/data/1.txt
/root/data/2.txt
/root/data/3.txt
/root/data/4.txt
/root/data/5.txt
[root@localhost ~]# find /root/data -mtime -1 -exec rm -f {} \; 
 
[root@localhost ~]# find /root/data -mtime -1 |xargs -i rm -f {}
 
[root@localhost ~]# ll /root/data/
总用量 0

指定路径、文件类型 查找空文件或目录的例子

要查找空文件或目录,可以使用-empty选项。例如,要查找空目录,可以使用以下命令:

find /path/to/search -type d -empty

指定路径、文件类型 查找特定权限文件的例子

要查找特定权限的文件,可以使用-perm选项。例如,要查找所有小伙伴可读、可写和可执行的文件,可以使用以下命令:

find /path/to/search -type f -perm 777

搜索指定用户的文件

[root@localhost ~]# find / -type f -user host 

搜索指定组的目录

[root@localhost ~]# find / -type d -group host
/var/tmp/yum-host-u08wM2
/var/tmp/yum-host-u08wM2/x86_64
/var/tmp/yum-host-u08wM2/x86_64/7
[root@localhost ~]# find / -type d -group host | wc -l
18

组合多个选项

您还可以将多个选项组合在一起来查找更精确的结果。例如,要查找所有的图片文件(.jpg或.png)和大小不超过1MB的文件,可以使用以下命令:

find /path/to/search -type f \( -name "*.jpg" -o -name "*.png" \) -size -1M

通过组合不同的选项,您可以根据自己的需求来定制查找条件,从而更加准确地找到所需的文件。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值