【Linux】Linux命令行大冒险:寻找、搜索与压缩的神奇之旅

  欢迎来到 CILMY23 的博客

🏆本篇主题为:Linux命令行大冒险:寻找、搜索与压缩的神奇之旅

🏆个人主页:CILMY23-CSDN博客

🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码训练营

🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注


前言:

我们也进入指令的结尾了,本篇主要讲述以下指令:

1.find 指令(⭐)         2. grep 指令 (⭐)         3. zip && unzip 指令         4.tar 指令


目录

find 指令 

查找指定目录下对应文件 

查找指定目录下所有对应文件 

什么是通配符? 

​编辑总结一下:

grep 指令

扩展选项:

grep + -i

grep + -n

 grep + -v

 zip && unzip 指令

什么是打包压缩?

为什么要有打包压缩?

如何打包压缩?

打包对应文件 

解压到指定目录 

tar 指令 

打包 

 解包

解包到指定路径

​总结


find 指令 

find 命令用于在指定目录下查找文件和目录。它具有强大的搜索功能,可以根据名称、类型、大小、修改时间等多种条件进行查找。

💫💫指令:find

💫💫功能:在指定目录下查找文件和目录

我们之前还学过一个,查找命令的指令 ----- which,这是专门拿来查找命令的

例如:which ls 

如图所示,它无法查找文件

find 的基本用法

find 路径 -name 文件名 

示例:

查找指定目录下对应文件 

该命令会在整个文件系统中查找所有名为 a.txt 的文件,并输出其路径。如果 a.txt 存在于多个位置,命令会列出所有找到的路径。

那如果我们想查找所有对应的文件呢? 

查找指定目录下所有对应文件 

这时候就要用到通配符 *。

什么是通配符? 

在 Linux 和其他类 Unix 系统中,通配符(Wildcard)是一种特殊字符,用于匹配文件名或路径中的一个或多个字符。通配符可以在命令行中使用,以便更灵活地处理文件和目录。 

常见的通配符如下:

  1. *(星号)

  • 匹配零个或多个字符。
  • 例如,*.txt 匹配当前目录下所有以 .txt 结尾的文件,如 file1.txt、document.txt 等。
  • a* 匹配所有以 a 开头的文件,如 apple、
  1. ?(问号)

  • 匹配一个单独的字符。
  • 例如,file?.txt 匹配 file1.txt、fileA.txt,但不匹配 file12.txt。

所以我们想查找指定目录下的所有.txt文件就可以用通配符

我查找了根目录 / 底下的所有 txt 文件。 

 甚至我们刚刚创建的 aa.txt 文件 和 a.txt 文件也有。

 通过上述两个例子,我们可以发现,find 查到文件,以绝对路径的形式出现了。

这也说明一件事:fnd是真正的在系统的树形结构中进行文件查找的! ,这也反向说明了Linux的文件系统结构是树, Linux树形结构特点:子区域还是一棵树。 

因此,我们也可以实现which的类似效果:

因为指令大多存放在 /usr/bin 的目录下,所以我们可以在这个目录下指定查找,例如:

which 其实是指定在 (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) 这些路径下查找的,所以它像限定好的 find 一样。


总结一下:

Linux下find命令在目录结构中搜索文件,并执行指定的操作。并且提供了相当多的查找条件,功能很强大。即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限。 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统)。

grep 指令

 那因为我们是新创建的服务器,并没有我们上次创建的大文件,这边我们继续伪造一个大文件。(详细的可以参考链接)。

grep 是一个非常强大的命令行工具,用于在文件中搜索特定的字符串或模式。它广泛用于文本处理和数据分析,能够快速查找和过滤信息。

💫💫指令:grep

💫💫功能:在文件中搜索字符串,将找到的行打印出来

💫💫基本用法:grep 字符串 文件

grep 的使用如下: 

 可以看到屏幕上打印了很多关于字符串”999“的行。

扩展选项:

接下来我们就要对 grep 进行一个详解了,首先我们先创建一个 test.txt 文件,利用 nano 对其输入内容。

text 文件内容如下:

上选项: 

grep 选项:

  • -i : 忽略大小写的不同,所以大小写视为相同
  • -n : 输出行号
  • -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行

grep + -i

这个可以忽略大小写,也就是无论我们的文件中,这三个字符字母到底有没有大小写,都可以查找出来。同样的,也包括你要搜索的字符串的大小写。

grep + -n

这个大家应该很熟悉了,我们在讲解 cat 的时候就有用过,在刚刚的操作也使用过。它可以在屏幕上打印的时候加上行号。

操作如下: 

 grep + -v

如果是使用-v选项,那它就是在反向选择,也就是显示出没有 '搜寻字符串' 内容的几行。

例如:

当然,上述的选项可以组合在一起,这样就变成了,输出行号的其他信息。

 zip && unzip 指令

什么是打包压缩?

打包压缩将多个文件和目录合并成一个单一文件的过程,同时通过压缩算法减少文件的大小。这个过程通常分为两个步骤:

  • 打包:将多个文件和目录合并成一个归档文件,常见的格式有 .tar、.zip、.rar 等。
  • 压缩:使用压缩算法减少文件的存储空间。

为什么要有打包压缩?

 打包压缩有以下几个优点,在长期接触我们的文件中,肯定是要方便使用的。

  • 节省空间:压缩文件可以显著减少所需的存储空间,特别是在存储大量数据时。
  • 便于传输:将多个文件打包成一个文件可以简化文件传输,减少网络传输的时间和带宽消耗。
  • 组织文件:打包可以将相关文件和目录组织在一起,方便管理和备份。
  • 保护数据:某些压缩格式支持加密,提供额外的安全性。

如何打包压缩?

在我们的xshell上,我们可以使用zip进行打包,然后使用unzip进行解压缩。

我们可以使用如下指令安装,当然如果你没有管理员权限,可以在前面加上sudo。 同理也可也安装unzip。

 💫💫指令:zip

💫💫功能:将目录或文件压缩成zip格式

💫💫基本用法:zip 压缩文件名 压缩文件

 示例:

在下图中,我们使用zip压缩了csdn目录。

我们创建了一个zip_test方便我们进行测试,接下来我们使用mv把这个zip压缩包移动进该目录中。 

 

现在我们进入该文件夹中,进行解压。 

💫💫指令:unzip

💫💫功能:将目录或文件解压缩

💫💫基本用法:unzip 需要解压缩文件

示例:

解压操作如图所示,我们可以使用unzip + 文件名。 

但是我们发现一个问题,为什么我们的csdn中的文件没有打包进来?

原先的文件有四个。 

如果我们想都拷贝过来,我们就需要增加一个扩展选项: 

扩展选项:

💫💫指令:zip -r

实操如下: 

查看后,果然所有的文件都被打包过来了。 

 

打包对应文件 

当然我们也可以使用通配符,在指定目录下,打包对应文件

例如:

我们可以单个选择文件,就是在后面添加文件名,那如果我们使用通配符 * , 则可以全选打包。 

解压到指定目录 

通过上述操作,我们知道  unzip 文件名 ,它是默认解压到当前文件夹,而我们加选项 -d,就可以解压到指定目录下。

扩展选项:

💫💫指令:unzip -d

💫💫功能:解压到指定目录下

 实操如下:

至此zip 和 unzip 的打包压缩我们就讲解到这。

问题小结: 

文件后缀都是zip吗?

是的,压缩包在压缩的时候是需要固定后缀的。所以.zip 固定起来就行了。另外呢,在我们现实生活中, 有不同的压缩包,对应的是不同的算法和压缩工具。像rar,zip,7z等等这些。

接下来我们要讲解一个重量级的选手---- tar

tar 指令 

tar 是一个用于打包和压缩文件的命令行工具,广泛用于 Linux 和 Unix 系统中。它的全称是 "tape archive",最初用于将文件归档到磁带上,但现在主要用于创建和管理归档文件。现在可以用来打包或者解包。

💫💫指令:tar

💫💫功能:打包/解包,可以不打开它,直接看内容

💫💫基本用法:tar [选项] 压缩文件名 压缩文件

打包 

 tar 和 zip 一样,可以单选文件,也可以全打包。

我们在命令框中,直接使用选项的组合进行打包。 

命令解析如下:

  • tar:调用 tar 命令,用于打包和压缩文件。
  • -c:表示创建一个新的归档文件(create)。
  • -z:表示使用 gzip 压缩归档文件。
  • -f:表示指定归档文件的名称,后面紧跟着要创建的文件名。
  • tar.tgz:这是要创建的压缩归档文件的名称,通常以 .tgz 或 .tar.gz 结尾。
  • *:表示当前目录下的所有文件和子目录。

如果我们想查看打包了哪些内容,就可以直接在组合上加 -v

我们可以看到,屏幕上输出了本次打包的文件。 

 解包

如果我们要使用tar命令进行解包,那我们就需要使用选项 -xzf 进行解包。 

 如图所示:

解包到指定路径

和unzip 一样 如果需要解包到指定路径,我们需要在末尾添加选项,不同的是,这里添加的是-C。

我们创建一个 tar_test 的目录,接下来使用 -C 解压到该文件夹下。 

 总结

zip 和 unzip 以及 tar 的用法。 

 打包压缩的另一个用途就是用于网络传输

我们可以输入以下命令进行安装。 

这样当我们在屏幕上输入 sz tar.gz 的时候,就可以选择我们的路径了。 

 传输完成后,我们可以看到桌面多了一份压缩包。

同时,我们可以使用rz从我们的Windows系统中,接收文件。

 


全文总结:

1. fnd是真正的在系统的树形结构中进行文件查找的! 

2.find 查到文件,以绝对路径的形式出现了

3. Linux树形结构特点:子区域还是一棵树。 

4.在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间

5.grep 可以在文件中搜索字符串,将找到的行打印出来,其中选项 -i 可以忽略大小写,-n 可以输出行号,-v 可以反向输出其他行列。(grep 搜索仅仅只针对文件内容搜索)

6. zip -r 用于打包目录以及目录的所有文件,unzip 进行对应的解压,unzip -d 可以解压到指定目录下。

7. tar -czf 可以进行打包文件,tar -xzf 可以进行解包文件,加选项 -v 可以查看打包/解包内容。

8.为什么要有打包压缩?这是为了方便网络传输

注:我利用alias 别名重命名了我的ll,和虚拟机一样看的比较爽一点。这时候我的 ll 指令相当于 ls -l -a指令。


 🛎️感谢各位同伴的支持,本期文件查找和打包压缩专题就讲解到这啦,下期我们将进入Linux的权限,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。       

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值