加入收藏 | 设为首页 | 会员中心 | 我要投稿 常州站长网 (https://www.0519zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

Linux系统查询大文件命令

发布时间:2023-10-18 10:04:46 所属栏目:Linux 来源:网络
导读:   接触 Linux 的同学想必都知道这么一句话,Linux 系统中一切皆文件。在那么多文件中,如果我想找某一个文件,大家是不是觉得肯定不好找,那么多文件怎么找出想要的那个。如果你有这种想
  接触 Linux 的同学想必都知道这么一句话,Linux 系统中一切皆文件。在那么多文件中,如果我想找某一个文件,大家是不是觉得肯定不好找,那么多文件怎么找出想要的那个。如果你有这种想法,那么可真的小瞧 Linux 了,只有你想不到没有 Linux 做不到的,今天就为大家介绍一个在 Linux 中查找文件的命令。
 
  find 是一个很强大的命令,很多时候,你需要了解当前系统下有哪些大文件,或者近期修改过的文件,又或者哪个以 .zip 结尾的压缩文件,find 都可以帮到你。那么如何把这些文件搜索出来呢?下来就教大家具体的使用方法。
 
  关于 find 命令,Linux 中给出的介绍是:search for files in a directory hierarchy,也就是在目录层次结构中搜索文件。通俗点来说就是用于查找目录下的文件,同时也可以调用其他命令执行相应的操作。
 
  语法格式:
 
  find [-H] [-L] [-P] [-D debugpots] [-Olevel] [pathname] [expression]find [搜索路径] [选项] [搜索内容]
 
  注意:find 命令以及后面的选项和路径、操作语句,每个元素之间都至少要有一个空格。还需要注意子模块的先后顺序。
 
  在介绍 find 参数之前,先说一下
 
  上面已经说过,find 是一个很强大的命令,因为它可以做的事情很多,所以相对应它的参数选项也比较多,这里为大家介绍几个比较常用的参数:
 
  pathname:表示命令所需要查找的目录路径
 
  Options 模块说明:
 
  -depth:从指定的目录下最里深层的子目录开始查找
 
  -maxdepth levels:表示找出系统中最大最深的目录级数,其中 levels 为自然数
 
  Tests 模块说明:
 
  -mtime [-n|n|+n]:按照文件的修改时间来查找文件(这个参数最常用),具体如下:
 
  ​ -n:表示更改文件的时间距现在 n 天以内
 
  ​ +n:表示更改文件的时间距现在 n 天以前
 
  ​ n:距现在第 n 天
 
  -atime [-n|n|+n]:按照文件的访问时间来查找文件,单位为天
 
  -ctime [-n|n|+n]:按照文件的状态改变时间来查找文件,单位为天
 
  -amin:按照文件的访问时间来查找文件,单位为分钟
 
  -cmin:按照文件的状态改变时间来查找文件,单位为分钟
 
  -mmin:按照文件的修改时间来查找文件,单位为分钟
 
  -group:按照文件所属的组来查找文件
 
  -name:按照文件名来查找文件,只支持 *、?、[] 等特殊通配符
 
  -user:按照文件属主来查找文件
 
  -type:查找某一类型的文件
 
  ​ b(块设备文件)、c(字符设备文件)、d(目录)、p(管道文件)、l(符号链接文件)、f(普通文件)、s(socket 文件)
 
  Actions 模块:
 
  -delete:将查找出的文件删除
 
  -exec:对匹配到的文件执行参数给出的 shell 命令
 
  find 支持的逻辑运算符:
 
  !:取反
 
  -a:取两个条件的交集,全拼为 and
 
  -o:取两个条件的并集,全拼为 or
 
  以上就是关于 find 命令的常用参数,了解完之后,我们在举几个例子来说明:
 
  按大小查找文件:
 
  $ find / -size +100M  查找根目录下所有文件大小超过 100M 的文件
 
  /root/123.txt
 
  /root/etc.zip
 
  /proc/kcore
 
  验证一下:
 
  $ ll -h 123.txt
 
  -rw-r--r--    1 root     root      109.6M Sep  7 11:26 123.txt
 
  随便挑选上面的文件进行查看,可以看到大小是超过 100M 的
 
  按照目录或者权限来查找文件:
 
  $ find /etc -perm 755
 
  查找在 /etc 目录下属主权限为 rwx,属组权限为 rx,其他权限为 rx 的文件
 
  按照名字指定关键字查找
 
  $ find /var/log -mtime +5 -name '*.log'
 
  在 /var/log 目录下查找 5 天前以 '.log' 结尾的文件
 
  使用 nouser 选项查找
 
  $ find . -user nobody
 
  查找用户为 nobody 的文件
 
  $ find . -nouser
 
  查找没有对应任何用户的文件
 
  按照文件类型查找
 
  $ find /tmp -type d
 
  查找 /tmp 目录下文件类型为目录的文件
 
  -type d:查找目录
 
  -type f:查找普通文件
 
  -type l:查找软链接文件
 
  相信大家可以看出 find 是 Linux 系统中的一个非常强大的搜索命令,它可以根据文件名来搜索文件,还能根据文件的权限、文件的大小、还有文件的时间还是有 inode 号等等来搜索文件。需要大家明白的是:这个命令是直接通过在硬盘进行的搜索,所以当出现搜索范围过大的情况时,find 命令也会相应的耗费比较大的系统资源,造成服务器压力过大。因此我们在使用这个命令时,尽可能不要指定过于大的搜索范围。
 

(编辑:常州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章