find命令

语法:find [搜素范围] [匹配条件]

按文件名查找

  1. find / -name init 在根目录下查找 名字为init的文件
  2. find / -iname init 在根目录下查找 名字为init的文件,不区分大小写
  3. find / -iname *init* 在根目录下查找 名字为init的文件,*表示通配符
  4. find / -iname ?init? 在根目录下查找 名字为init的文件,?表示占位符
  5. find / -name initab -exec -ls -l {} \ ;
  6. 在根目录下查找 文件名为initab 并且连接ls l 命令来显示其详细信息

-exec:表示 连接命令;{} 表示find查找的结果的集合 ;\ 表示转义符 ;分号表示结束;

按文件大小查找

1个数据快等于512字节(0.5k),204800数据块是 204800*0.5k=102400k=100M
在根目录下查找 大于100M的文件,

  1. find / -size +204800 在根目录下查找 大于100M的文件,
  2. find / -size -204800 在根目录下查找 小于100M的文件,
  3. find / -size +204800 -a -size -404800 在根目录下查找 大于100M 并且 小于 200M的文件,
  4. find / -size +204800 -o -size -204800 在根目录下查找 大于100M 或者 小于 100M的文件,

按文件所有者/所属组查找

  1. find /home -user lizhouwei 在根目录下查找 所有者为lizhouwei的文件
  2. find /home -group root 在根目录下查找 所属组为root 的文件

按时间查找

  1. find /etc -cmin -5 etc 目录下查找5分钟内被修改过属性的文件或目录,c表示change;
  2. find /etc -amin -5 etc 目录下查找5分钟内被访问过的文件或目录,a表示access;
  3. find /etc -mmin -5 etc 目录下查找5分钟内内容被修改过的文件或目录m表示modify;

按文件类型查找

  1. find /etc -type f 在根目录下根据文件类型查找 f:文件 d:目录 l 链接)在etc目录下查找文文件
  2. find /etc -type f 在根目录下根据文件类型查找 f:文件 d:目录 l 链接)在etc目录下查找文文件

按文件节点数查找

  1. find /etc -inum 节点数; 在根目录下根据节点查找 (通过 ls -i 显示文件的i节点) ,

locate

locate 是另外一个根据文件名来搜索文件的命令。区别于 find 命令,locate 命令无需指定路径,直接搜索即可。如果文件在/tmp目录下 locate是无法找到的。

  1. locate -i 文件名 不区分大小写

这个命令不是直接去系统的各个角落搜索文件,而是在一个叫 mlocate.db 的数据库下搜索。这个数据库位于 /var/lib/mlocate/mlocate.db ,它包含了系统里所有文件的索引,并且会在每天早上的时候由 cron 工具自动更新一次。
正因为如此,locate 的搜索速度远快于 find 命令,因为它直接在数据库里检索,速度自然更快。
locate 命令在找到文件之后,将直接显示该文件的绝对路径,
但是 locate 命令有个弊端,它无法搜索当天所创建的文件,因为它的数据库一天只在早上更新一次。比如我现在创建一个新文件,locate 没办法搜索到,为了解决这个问题,我们可以使用 updatedb 命令手动去更新它的数据库:

  1. $ sudo updadb

然后,我们就可以搜索到新文件了。

which

which 命令主要用来查找可执行文件的位置,它搜索的位置指定在 $PATH$MANPATH 环境变量下的值,默认情况下,which 命令将显示可执行文件的第一个存储位置:
查找文件 - 图1
如果某个可执行文件存储在多个位置,可以使用 -a 选项列出所有的位置。
如果你想一次性查找多个文件,可以直接跟在 which 命令后面即可。
查找文件 - 图2**

whereis

whereis 命令会在系统默认安装目录(一般是有root权限时默认安装的软件)查找二进制文件、源码、文档中包含给定查询关键词的文件。(默认目录有 /bin, /sbin, /usr/bin, /usr/lib,/usr/local/man等类似路径)。
一般包含以下三部分内容:

  • 二进制文件的路径
  • 二进制文件的源码路径
  • 对应 man 文件的路径

比如我们现在搜索 ls 命令:
查找文件 - 图3
我们可以使用 -b 选项来只搜索可执行文件所在位置,使用 -B 选项指定搜索位置,使用 -f 选项列出文件的信息。
查找文件 - 图4
同样地,我们可以使用 -s 限定只搜索源码路径,使用 -m 搜索 man page 路径,使用 -s 指定搜索源代码文件的路径,使用 -M 指定搜索帮助文件的路径。