欢迎来到 CILMY23 的博客
🏆本篇主题为:Linux命令行大冒险:寻找、搜索与压缩的神奇之旅
🏆个人主页:CILMY23-CSDN博客
🏆系列专栏:Python | C++ | C语言 | 数据结构与算法 | 贪心算法 | Linux | 算法专题 | 代码训练营
🏆感谢观看,支持的可以给个一键三连,点赞收藏+评论。如果你觉得有帮助,还可以点点关注
前言:
我们也进入指令的结尾了,本篇主要讲述以下指令:
1.find 指令(⭐) 2. grep 指令 (⭐) 3. zip && unzip 指令 4.tar 指令
目录
find 指令
find 命令用于在指定目录下查找文件和目录。它具有强大的搜索功能,可以根据名称、类型、大小、修改时间等多种条件进行查找。
💫💫指令:find
💫💫功能:在指定目录下查找文件和目录
我们之前还学过一个,查找命令的指令 ----- which,这是专门拿来查找命令的
例如:which ls
如图所示,它无法查找文件
find 的基本用法
find 路径 -name 文件名
示例:
查找指定目录下对应文件
该命令会在整个文件系统中查找所有名为 a.txt 的文件,并输出其路径。如果 a.txt 存在于多个位置,命令会列出所有找到的路径。
那如果我们想查找所有对应的文件呢?
查找指定目录下所有对应文件
这时候就要用到通配符 *。
什么是通配符?
在 Linux 和其他类 Unix 系统中,通配符(Wildcard)是一种特殊字符,用于匹配文件名或路径中的一个或多个字符。通配符可以在命令行中使用,以便更灵活地处理文件和目录。
常见的通配符如下:
*
(星号):
- 匹配零个或多个字符。
- 例如,*.txt 匹配当前目录下所有以 .txt 结尾的文件,如 file1.txt、document.txt 等。
- a* 匹配所有以 a 开头的文件,如 apple、
?
(问号):
- 匹配一个单独的字符。
- 例如,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 一样。
![](https://i-blog.csdnimg.cn/direct/0f18ecfb61864a429f33591561691bf2.png)
总结一下:
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的权限,如果你觉得写的不错的话,可以给个一键三连,点赞,收藏+评论,可以的话还希望点点关注,若有不足,欢迎各位在评论区讨论。