在linux下查询前5条数据类型,Linux的五个查找命令

每一种操作系统都由成千上万的文件组成,Linux系统更是一切皆文件,我们都能很轻松使用windows下的文件查找功能,(Everything也是一款很好用的文件查找软件),但是对linux这一功能可能并不是很熟悉,因为linux系统下文件没有固定的文件名后缀,而且一个相同的文件在不同的发行版,可能会有不同,所以牢牢掌握linux系统的查找命令就会显得十分重要,学习起来也会更加顺利,而且在学习的过程中你会发现linux的文件查找功能真的很强大!!

1.which

2.whereis

3.whatis

4.locate

5.find

6.type

因为对于type和grep,有很多不同的看法,所以这里所有的命令都会分析。

在学习每个命令之前,我都会习惯性的man一下,先看Linux下对这条命令的用法解释等。

一、which

从文档可以看出:which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

参数信息:

-n:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;

-p:与-n参数相同,但此处的包含了文件的路径;

-w:指定输出时栏位的宽度;

-V:显示版本信息。

我们先来搜索一个不存在的命令:

which hello2dbee3ffd0c58a8d176395a212042f65.png

no hello in + 路径,这个路径就是PATH环境变量的路径,我们可以验证一下46935431d8fdd62909512433199722fc.png

现在我们来查找一条存在的命令:

which ls 和 which grep

728bc886818a8c022d1e9da3756cc046.png

二、whereis

从文档可以看出:whereis命令只能用于程序名的搜索,

参数信息:

-b:只查找二进制文件;

-B:只在设置的目录下查找二进制文件;

-f:不显示文件名前的路径名称;

-m:只查找说明文件;

-M:只在设置的目录下查找说明文件;

-s:只查找原始代码文件;

-S只在设置的目录下查找原始代码文件;

-u:查找不包含指定类型的文件。

如果省略参数,则返回所有信息。

例:

whereis ls 和 whereis grep

cb8fedf2f75f811ad1fcd7cfaa55eab5.png

三、whatis

whatis命令是用于查询一个命令执行什么功能,并将查询结果打印到终端上

whatis 命令相当于 man -f 命令

whatis cp\ whatis grep\ whatis chown\ whatis man5a1a3106e49aba1eebf94ab959d35b8e.png

四、locate

locate命令和slocate命令都用来查找文件或目录。

用法:locate/slocate (选项)参数

locate命令其实是find -name的另一种写法,但是locate要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。

有时候运行locate命令会出现以下错误:7e2d5fa7bb3c7c866a33a2f6d6efc56b.png

显示没有这个文件或文件夹。这时候就要进行这个命令:updatedb。Linux系统自动创建/var/lib/locatedb数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。6ea081b5b817c133702be1319402bc9a.png

这样就可以用locate命令查询文件。

参数:

-d或--database=:指定数据库所在的目录;

-u:更新slocate数据库;

--help:显示帮助;

--version:显示版本信息。

五、find------------(很重要)

find命令用来在指定目录下查找文件。

任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

5.1 使用格式:find

- : 所要搜索的目录及其所有子目录。默认为当前目录。

- : 所要搜索的文件的特征。

- : 对搜索结果进行特定的处理。

5.2 参数选项

find命令是最常见和强大的查找命令,用它可以找到任何你想查找的内容。因此它的参数也是非常多的。

大概可以归类为以下几种:

1.根据文件或正则表达式进行匹配。

2.根据时间查找。

3.根据文件权限(所属组,拥有者)查找。

4.借助-exec与其他命令结合使用。

下面我根据上面的归类,讲解find各个参数的使用。

1.列出当前目录及子目录下所有文件和文件夹 find .

d832125711919f5929a720db019034d9.png          2.在/home下查找以.txt结尾的文件名 find /home -name "*.txt"

ebcd96228ecb4efdaeb68060bdbd31de.png

文件太多,截图没办法截完。

3.在/home下查找以.txt结尾的文件名 但忽略大小写。 find /home -iname "*.txt"194fbfca0aada0e9c8774460bc8b1196.png

文件太多,截图只是一部分。

4.查找当前目录及子目录下所有以.txt和.pdf结尾的文件

find . -name "*.txt" -o -name "*.pdf"

find . \( -name "*.txt" -o -name ".pdf" \)

0fa91620ee592fa21d16c93df6e55a8d.png

5.匹配文件路径或文件

find /usr/ -path "*local"

3c98e5e1491fe2b1132d2dc3ae7a7d35.png

6.基于正则表达式匹配文件路径

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

find  . -iregex ".*\(\.txt\|\.pdf\)$"

36f1e5cae4b53ffe561f0740f5035458.png

7.找出/home/zhangxue/Study路径下不是以.txt结尾的文件

0719f9bfed718a04d31fc58aa5f53f8f.png

8.根据文件类型查找

bc7e733868a998ffbdd7deaaeacb047b.png

9.

6c5b8ed27fcec7325f6532ab33851390.png

93fec2ff595fec9a78c8c53b3974adb4.png

10.

UNIX/Linux文件系统每个文件都有三种时间戳: 访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。 修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。 变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。

搜索最近7天内访问过的文件

4c21c736f5ce2a521065cd1072412b2b.png

查找恰好7天前访问的文件

find . -type -atime 7

查找超过7天访问的文件

find . -type -atime +7

查找访问时间超过10分钟的文件

find . -type -amin +10

找出比test.cpp修改时间更长的文件

find . -type f newer test.cpp

42f9a67f23714df5884e6a3ecf294335.png

11.根据文件大小进行匹配

文件大小单元: b —— 块(512字节) c —— 字节 w —— 字(2字节) k —— 千字节 M —— 兆字节 G —— 吉字节

查找大于10k的文件

find . -type f -size +10k

查找小于10K的文件

find . -type f -size -10k

845da09940c29beb9e8eb58c12806f3b.png

fd4eed51a3a750133e4327bf483a2d59.png

删除匹配文件

在查找命令后加上 -delete

删除以.txt结尾的文件

find . -type -name "*.txt" -delete

12.根据文件权限/所有权进行匹配

查找文件权限为777的文件

find . -type -f  -prem 777

76440560c657649c378ca981c2aca9d1.png

查找文件权限不是664的文件

find . -type -f ! -prem  664

0b531e869722039042d27e185759e8e9.png

13.借助-exec选项与其他命令结合使用

查找到拥有者为root的文件,并将它的拥有者改为zhangxue

find . -type f -user root -exec chown zhangxue {} \

查找所有以.txt文件结尾的文件,并把它写到all.txt文件中去

find . -type f -name "*.txt" -exec cat {}\;> all.txt

列出所有长度为0

find . -empty

六、type

type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令

c3a2b878771dbdcddbb2966c6cf56647.png

除此之外,linux还有很强大的文件搜索的功能,在以后学习的过程中我会慢慢积累,加到博客上去。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值