山地人

搜索定位文件

山地人
山地人
2021-05-17

通过前两篇的学习,我们已经掌握的如何在Linux系统里查看管理文件的基本命令,这一篇我们将目光聚焦在如何搜索定位文件上。

搜索文件

在Windows这种图形化界面中,我们已经很熟悉搜索功能,但来到Linux中,我们需要通过命令来帮助我们完成搜索的功能。

find是一个快速查找文件名的工具。通过命令的名称你就能知道这个工具是做搜索用的。使用方法也非常简单

find search_path -name filename
  • search_path 为指定的搜索路径
  • -name 后面指定的搜索的文件名称

动动手

比如:想要搜索所有以a开头的文件名

cd home
touch abc.txt
touch hello.txt
touch main.txt

启动终端,按照上面的步骤在home目录创建几个测试文件。

然后使用下面的命令进行搜索。

find . -name a*

你会获得下面的结果,find命令匹配除了正确的结果,只有abc.txt符合我们本次的搜索要求。

# find . -name a*
./abc.txt

当然,find命令的功能非常强大,还有很多搜索参数可以使用。

find命令的参数含义
-type指定搜索的文件类型:d目录文件,b块设备,c字符设备,l符号链接
-size指定文件大小:n(单位k
-empty只搜索空的文件或空目录
-ctime指定搜索创建时间在n小时前创建的文件
# 搜索/home目录下 .js 结尾的文件
find /home -name *.js
# 搜索当前目录下的空目录
find . -type d -empty
# 搜索当前目录下,1小时前创建的文件
find . -ctime 1

启动终端,测试上面这些示例,你也可以根据上面给出的一些常用参数,测试自己定义的规则。

指定文件内查找

find命令是用来进行指定路径下的文件搜索,如果要在指定文件中进行全文搜索,我们就要用到grep命令了。grep命令在文件内的搜索能力是非常强的。

下面是grep命令的一个基本用法。

grep patterns file
  • patterns 是指定搜索的模式
  • file 是指定要搜索的文件

动动手

1.创建一个待搜索的文本

echo "abcdef hello \nhello\nworld\good" > test.txt

2.查看文件内容

cat test.txt

3.使用grep搜索test.txt中包含a的文本行

grep a test.txt

打开终端,进行上面的实验。

查看文件

我们前面已经学过了一种查看文件内容的方式:cat,但是对于大型文件,比如大型的日志文件,我们通常不会直接使用cat命令来查看。否则只能看到满屏的字符。

那是否有只查看文件部分内容的命令呢,当然,你想到的Linux的早期用户都考虑到了,这就是headtail命令。

这两个命令,从字面意思就能看出,head是查看文件头部,而tail则是查看文件结尾的。

head test.txt
tail test.txt

打开终端,先构建一个测试文件,然后分别用headtail来查看这个文件。

echo "1\n2\n3\n4\n5\n6\n7\n8\n9\n10\na\nb\nc\nd\ne\nf" > test.txt

上面是我为你准备的测试文件,你可以直接拿来使用。

如果你想查看指定行数的文本,可以用-n指定要查看的行数。

head -n 5 test.txt
tail -n 5 test.txt

打开终端,分别用headtail来查看test.txt文件中的前5行和结尾的5行内容。

比较文件差异

有时候,我们需要对比两个文件的差异,在Windows中你可能需要安装一个专门的应用来处理这个问题。而在Linux中,diff命令就是一个天然专门针对文件差异进行比较的工具。

diff: different 的缩写,会一行一行对比两个文件的差异。

diff file_a fie_b

下面我们创建两个测试文件

echo "abc\n122\nhello\nWorld" > a.txt
echo "abc\n123\nhello\nworld" > b.txt

使用diff a.txt b.txt来查看两个文件的差异

当然diff还提供了彩色显示模式,diff --color a.txt b.txt

小结

下面我们把这节课学过的知识点再来回顾一下:

命令解释
find在指定路径搜索符合条件的文件
grep在指定文件中搜索匹配的文本行
head从文件头部输出部分文件内容
tail从文件尾部输出部分文件内容
diff按行比对文件之间的差异

至此,本篇教程也到了该和你说再见的时候了,我们下期再见。

学完本篇互动教程,如果你觉得体验不错,可以把网页链接发送给你的小伙伴,让他/她也来感受一下。当然,你也可以继续看看网站上其他的的互动教程,希望`idev365`能够给你带来收获。