查找、压缩、管道

1、查找文件

find命令
​
在linux系统中,按照我们的要求去查询文件。

格式:

find [查询的路径] [匹配模式] [匹配规则]

匹配模式:

-name : 按照名字去匹配

正则匹配:

* : 匹配任意数量的任意字符(匹配零个或多个任意字符)
?: 匹配任意一个字符

-type : 按照文件的类型匹配

常见的文件类型:

f : 普通文件
d : 普通文件夹
l : 链接文件
c : 字符设备文件
b : 块设备文件
s : socket文件

-perm : 按照文件的权限来查询

常见的文件权限:

755 : 文件夹的默认权限
644 :  文件的默认权限

-user : 按照文件的属主来查询
-nouser :查询用户被删除了的文件

-group : 按照文件的属组来查询
-nogroup : 查询没有数组的文件

知识储备:

删除用户:userdel [用户名]
删除用户组:groupdel [属组名]

-mtime : 按照修改文件的时间来查询

+      查询某个时间段之前的数据
-      查询某个时间段之内的数据
​
-size : 按照文件的大小来查询

+ 查询超过n的文件
- 查询小于n的文件

知识储备:

stat : 查看文件的各种时间

-ctime : 按照文件的创建时间来查询
-atime : 按照访问时间来查询文件
​
-a(默认) : 并且

-o :或者

-exec(xargs) : 处理匹配之后的内容                
           
  案例1:查询出/etc目录下的hosts文件

[root@localhost ~]# find /etc -name "hosts"
/etc/hosts
​
案例2:查询出/etc目录下的以ifcfg开头的文件

[root@localhost ~]# find /etc/ -name "ifcfg*"

案例3:查询出/etc目录下以.conf结尾的文件

[root@localhost ~]# find /etc/ -name "*.conf"
​
案例4:查询出/etc目录下,文件名中包含host的文件有哪些

[root@localhost ~]# find /etc/ -name "*host*"
​
案例5:查询出/etc目录下,所有的普通文件。

[root@localhost ~]# find /etc/ -type f
​
案例6:查询出/etc目录下,所有的文件夹

[root@localhost ~]# find /etc/ -type d

案例7:查询出/dev/目录中的所有的块设备文件

[root@localhost ~]# find /dev/ -type b
​
案例8:查询出/dev目录中所有的字符设备文件

[root@localhost ~]# find /dev/ -type c
​
案例9:查询出/etc目录中文件名包含nginx的普通文件

[root@localhost ~]# find /etc/ -name "*nginx*" -type f

案例10:查询出/root目录下,权限为755的文件

[root@localhost ~]# find /root/ -perm 755

案例11:查询出属主为test01的文件

[root@localhost ~]# find /root/ -user test01

案例12:查询属主被删除了的文件

[root@localhost ~]# find /root/ -nouser
​
案例13:查询属组为test的文件

[root@localhost ~]# find /root/ -group test

案例14:查询属组被删除了的文件
[root@localhost ~]# find /root/ -nogroup

案例15:查询2天以前修改过的文件

[root@localhost ~]# find /root/ -mtime +2

案例16:查询2天以内创建的文件

[root@localhost ~]# find /root/ -ctime -2
​
案例17:查询2天以内访问过的文件

[root@localhost ~]# find /root/ -atime -2

案例18:查询大于1M的文件

[root@localhost ~]# find /root/ -size +1M

案例19:查询小于1M的文件

[root@localhost ~]# find /root/ -size -1M

案例20:查询在3天以内创建的文件,并删除

[root@localhost tmp]# find /tmp/ -mtime -3 -type f -exec rm -rf {} \;
​
-exec: 处理查询之后的内容
{}: 代表的是查询到的内容、
\; :  固定搭配

知识储备:
xargs :将所有的内容格式化成一行
​
[root@localhost tmp]# find /tmp/ -mtime -3 -type f | xargs -I {} rm -rf {}

练习1:要求将所有3天前创建的普通文件加上.bak后缀

[root@localhost tmp]# find /tmp -ctime -3 -type f -exec mv {} {}.bak \;

[root@localhost tmp]# find /tmp/ -type f -ctime -3 | xargs -I {} mv {} {}.bak

2、Linux系统压缩包

gzip:
​
压缩软件,将文件做成一个压缩包,会删除原来的文件,生成一个新的压缩包文件。

格式:
压缩:gzip [文件路径]

解压:gzip -d [压缩包路径]
bzip:
​
压缩软件,将文件做成一个压缩包,会删除原来的文件,生成一个新的压缩包文件。
格式:
压缩:bzip2 [文件路径]

解压:bzip2 -d [压缩包路径]
   缺陷:

bzip2不能压缩目录。

gzip 比 bzip2 压缩率更大

tar:
打包文件,不会删除原文件,也不会压缩文件;tar命令是可以跟gzip或者bzip2共同使用

格式:

tar [参数] 压缩包名称

参数:

-f : 指定压缩包名称

-c : 打包文件
​
-z : 指定使用gzip压缩,一般使用gzip压缩的文件都以.tar.gz作为扩展名

-j : 指定使用bzip2压缩,一般使用bzip2压缩的文件都以.tar.bz2作为扩展名

-v : 显示压缩包压缩的过程

-x : 解压,不需要指定压缩包的压缩类型,它会自动匹配压缩包的类型自行解压。
​
-P  :当压缩包中存在根目录是,自动移除根目录

-t : 查看压缩包中的内容
​
练习1:将/etc目录中的所有的普通文件压缩成/tmp/etc.tar.gz文件

[root@localhost tmp]# tar -czvPf /tmp/etc.tar.gz $(find /etc/ -type f | xargs)

知识储备:

$()   :   相当于数学当中的()

(1 + 2) * 3

3、linux中的管道

用于传输数据,可以将前一个命令的执行结果,交给管道之后的命令去处理
​
格式:
​
|
​
案例1:删除/tmp目录下,一天以内创建的文件
​
[root@localhost tmp]# find /tmp/ -ctime -1 -type f | xargs -I {} rm -rf {}

案例2:将etc中所有的普通文件,复制到/tmp目录中
​
[root@localhost tmp]# find /etc/ -type f | xargs -I {} cp -r {} /tmp/

 

posted @ 2021-09-28 20:23  毛瑞杰  阅读(251)  评论(0)    收藏  举报