Linux下的find命令详解

这篇讲讲Linux下文件查找的命令:locatefind,其中locate很简单,主要讲解find命令

locate

用法

locate to/find/file/name

直接加上需要的文件名就行了,但是locate查找的可能是不精确的,甚至可能找不到你需要的 因为locate实际是查找文件数据库,所以速度很快,但是是非精确匹配的,另外如果你刚创建的文件想要查找的话,因为数据库还是没更新,所以查找不到

更新文件数据库

updatedb

速度非常慢,视你的系统中文件的多少决定

find

由于locate的非精确查找和非实时查找的特性,导致locate用的不多 find支持实时查找,拥有众多查找选项,是Linux上查找最常用的,但是缺点也是比较明显: 如果文件数量很多的话,查找起来很慢

whatever,find依然是最有用且最常用的Linux查找命令

用法

find支持文件名的正则表达式查找,按文件修改时间查找,按文件大小查找,按文件权限查找,按文件类型查找等,查找到以后还支持直接对查找到的文件使用命令,功能非常强大

典型的find命令的写法是:

find 查找路径 查找的标准 查找到之后的动作

比如: find /home -type d -ls 意思是: 找出/home/下所有的目录,并显示目录的详细信息

选项

按文件名查找

  • -name 直接加文件名,且支持文件名通配
  • iname 类似于-name, 但是匹配文件名时不去分大小写
  • -regex 正则表达式匹配文件名

example:

find . -name "vim*" -ls 查找当前目录下所有以vim开头的文件,并显示其详细信息 find . -iname "vim*" -ls 查找当前目录下所有以vim开头的文件(不区分大小写),并显示其详细信息

按文件类型查找

  • -type 文件属性
  • d: 目录
  • f: 普通文件
  • l: 链接文件(link)
  • s: socket文件
  • p: 管道文件(pipe)
  • b: 块设备文件
  • c: 字符设备文件

example:

find . -type d -ls 显示当前目录下所有的目录的详细信息 find . -type l -ls 显示当前目录下所有的链接文件的详细信息

按文件所属组/owner查找

  • -gid GID
  • -uid UID
  • -user USER
  • -group GROUP
  • -nouser
  • -nogroup

exmaple:

find . -user gavinzhou -ls 显示当前目录下属于gavinzhou的所有的文件的详细信息

按文件大小查找

  • size [+,-][b,k,M,G]

example:

find . -type f -size +1k -ls 显示当前目录下所有大于1k的普通文件的详细信息

按文件的修改时间等查找

  • ctime: 改变时间(按照天计算)
  • atime: 访问时间
  • mtime: 修改时间 -amin: 改变时间(按照分钟计算) -cmin: 访问时间 -mmin: 修改时间

使用[+,-]表示[大于,小于]

example:

find . -atime -1 -ls 显示当前目录下所有在两天以内访问过得文件的详细信息 find . -cmin +10 -ls 显示当前目录下所有超过10min没有改变过的文件的详细信息

按文件权限查找

-perm MODE /MODE: 任意一位匹配即满足条件 -MODE: 文件权限能完全包含此MODE时才符合条件

example:

find . -perm -644 -ls 显示当前目录下文件权限的每一位至少包含r-xr–r–的文件的详细信息 find . -perm /464 -ls 显示当前目录下文件权限的某一位至少包含r–rx-r–的文件的详细信息

组合查找

-a: and -o: or -not:

example:

find . -type d -o -type l -ls 显示当前目录下所有目录和链接文件的详细信息

后继命令

  • -print: 显示
  • -ls:类似ls -l的形式显示每一个文件的详细
  • -quit: 查找到一个就退出
  • -delete: 删除匹配到的行
  • -ok COMMAND {} \; 每一次操作都需要用户确认,{}表示引用找到的文件,是占位符
  • -exec COMMAND {} \; 每次操作无需确认

example:

find . -type d -delete 删除当前目录下的所有目录 find . -type f -ok wc -l {} \; 找出当前目录下所有的普通文件并显示文件行数(需确认) find . -type f -exec wc -l {} \; 找出当前目录下所有的普通文件并显示文件行数(无需确认)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

怎么样看主板支持最大内存

转载:http://jingyan.baidu.com/article/ab0b5630a869cdc15afa7d19.html

422
来自专栏大闲人柴毛毛

Linux数据流重定向

1 什么是数据流重定向? Linux中,数据流的重定向被分为输入重定向 和 输出重定向。 输出重定向 将原本应该输出到屏幕上的信息输出到文件中。 当执...

3395
来自专栏北京马哥教育

软件测试工程师必知必会Linux命令

Linux系统有着众多的优点,比如开源、非商业版本免费、多任务多用户操作,因此Linux系统在非桌面领域占有压倒性的市场份额。对于互联网技术工作者来说,掌握常用...

38413
来自专栏数值分析与有限元编程

Fortran知识 | 代码错误(end-of-file during read)

如图所示,提示为:end-of-file during read ? 这是读取文件时的错误。比如,代码要求某一变量有9行数据,实际文件中只有8行,即数据文件缺失...

2625
来自专栏章鱼的慢慢技术路

Linux中几个与文档相关的命令

1473
来自专栏青枫的专栏

解决vi编辑器不能使用方向键和退格键问题的两种方法

  在Ubuntu中,进入vi命令的编辑模式,发现按方向键不能移动光标,而是会输出ABCD,以及退格键也不能正常删除字符。这是由于Ubuntu预装的是vim-t...

501
来自专栏XAI

修改UCenter用户名长度限制的方法php程序和数据库修改

做了discuz api for java  第三方应用项目的注册登陆。 但是在修改用户名长度的时候。出现了小bug。找到解决发现是自身原因。 ? 在discu...

19710
来自专栏三木的博客

Linux shell 程序设计1——安装及入门

1、什么是shell? shell是linux内核的“壳”,是用户和内核的桥梁。它类似于windows下的命令提示符,将用户输入的命令解释给内核执行,并返回给用...

1776
来自专栏C/C++基础

Linux命令(16)——chattr与lsattr命令

chattr与lsattr分别用于改变和显示文件属性,与chmod命令相比,chmod只改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

501
来自专栏linux系统运维

vim的介绍以及使用

1073

扫码关注云+社区