Linux中查找文件号令-find-which-whereis-locate,有哪些区别?

1年前 (2023-02-01)阅读2回复1
kewenda
kewenda
  • 管理员
  • 注册排名1
  • 经验值550580
  • 级别管理员
  • 主题110116
  • 回复0
楼主

Linux中查找文件的号令有良多,可能各人遍及用到比力多的是find,但locate、whereis、which也是比力好用的查找号令。

它们的次要区别是:

find:是个很强大的查找号令,能做到实时查找,切确查找,但查找内容较多时速度慢,效率低

locate:查找速度快,但不是实时查找,查找的成果不切确

whereis:用于查找二进造文件、源代码文件和帮忙手册;

which:会在情状变量$PATH设置的目次里查找契合前提的文件

1.find查找文件

find用来在指定目次下查找文件。

任何位于参数之前的字符串都将被视为欲查找的目次名。

若是利用该号令时,不设置任何参数,则find号令将在当前目次下查找子目次与文件。而且将查找到的子目次和文件全数停止展示。

find用法:

find <path><expression>

path:所要搜刮的目次及其所有子目次。默认为当前目次。

expression:所要搜刮的文件的特征。

参数申明:

-cmin n : 在过往n分钟内被修纠正

-ctime n : 在过往n天内被修纠正的文件

-mtime n:在过往n天内被修纠正的文件

-mmin n:在过往n分钟内被修纠正

-empty : 空的文件,觅觅文件大小为0 Byte的文件,或目次下没有任何子目次或文件的空目次;

-ipath p, -path p : 婚配文件途径,ipath 会漠视途径大小写

-name name,-iname name : 婚配文件名称。iname 会漠视名称大小写

-size n : 婚配文件大小,单元有:c--字节,k--千字节,M--兆字节,G--GB

-type c : 婚配文件类型,c是指定的类型。(文件类型参数有:f--通俗文件,d--目次,l--符号链接)

-exec<施行指令>:假设find指令的回传值为True,就施行该指令;

-ok<施行指令>:此参数的效果和指定“-exec”类似,但在施行指令之前会先询问用户,若答复“y”或“Y”,则舍弃施行号令;

-regex<范本款式>:指定字符串做为觅觅文件或目次的范本款式

常用实例:婚配文件名称

将当前目次及其子目次下所有.py后缀的文件列出来:

find . -name "*.py"

find . -iname "*.py"

婚配文件途径

婚配文件途径或者文件:

find /usr/ -path "*local*"

基于正则表达式婚配文件途径:

find . -regex ".*\(\.txt\|\.doc\)$"

(查找当前目次及子目次下所有以.txt或.doc结尾的文件)

婚配时间戳

查找比来3天内被拜候过的所有文件:

find . -type f -atime -3

婚配文件大小

在当前目次下查找文件长度大于10kb的文件

find . -size +10k

2.locate查找文件

locate查找号令比力简单且不是实时的,而是以数据库的更新为准。

locate 现实上查的是一个保留文档和目次名称的数据库,默认是/var/lib/slocate/slocate.db

Linux系统主动创建那个数据库,而且天天主动更新一次,因而,我们在用locate 查找文件时,有时会找到已经被删除的数据,或者刚刚成立文件,却无法查找到,原因就是因为数据库文件没有被更新。

为了禁止那种情状,能够在利用locate之前,先利用updatedb号令,手动更新数据库(也能够利用locate -u号令来更新)

常用实例:

查找出以passwd开头的所有文件

locate passwd

查找出/data/jjing/目次下所有以test开头的文件或文件夹下的所有内容

locate /data/jjing/test

3.whereis查找文件

whereis号令只能用于法式名的搜刮,并且只搜刮二进造文件(参数-b)、man申明文件(参数-m)和源代码文件(参数-s)。若是省略参数,则返回所有信息。

常用实例:

查找passwd那个文件名有关的所有数据

# whereis passwd

passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz

4.which查找文件

which号令的感化是,在PATH变量指定的途径中,搜刮某个系统号令的位置,而且返回第一个搜刮成果。也就是说,利用which号令,就能够看到某个系统号令能否存在,以及施行的到底是哪一个位置的号令。

常用实例:

$ which grep

/bin/grep

0
回帖

Linux中查找文件号令-find-which-whereis-locate,有哪些区别? 相关回复(1)

清风拂面
清风拂面
沙发
查找文件的方式多样,命令不同但各有优缺点。
潜水4个月前 (01-24 02:33)回复00
取消
载入表情清单……
载入颜色清单……
插入网络图片

取消确定

图片上传中
编辑器信息
提示信息