10文件查找、压缩;管道

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的文件

知识储备:
start : 查看文件的各种时间

-ctime : 按照创建文件的时间来查询
-atime : 按照访问文件的时间来查询

-a : 并且(默认)
-o : 或者

-exec(xargs) : 处理匹配之后的内容

   
案例1、查询出/etc目录下的hosts文件
find /etc -name "hosts"

案例2、查询出/etc目录下的ifcfg开头的文件
find /etc -name "ifcfg*"

案例3、查询出/etc目录下的.conf结尾的文件
find /etc -name "*.conf"

案例4、查询出/etc目录下,文件名中包含host的文件有哪些
find /etc -name "*host*"

案例5、查询出/etc目录下,所有的普通文件
find /etc -type f

案例6、查询出/etc目录下所有的文件夹
find /etc -type d

案例7、查询出/dev目录下的所有的块设备文件
find /dev -type b

案例8、查询出/dev目录下的所有的字符设备文件
find /dev -type c

案例9、查询出/etc目录下文件名含nginx的普通文件
find /etc -name "*nginx*" -a -type f

案例10、查询出/root目录下权限为755的文件
find /root -perm 755

案例11、查询出属主为test01的文件
find /root -user test01

案例12、查询属主被删除了的文件
find /root -nouser

案例13、查询属组为test的文件
find /root -group test

案例14、查询属组被删除了的文件
find /root -nogroup

案例15、查询2天以前修改过的文件
find /root -mtime +2

案例16、查询2天以内创建的文件
find /root -ctime -2

案例17、查询2天以内访问过的文件
find /root -atime -2

案例18、查询大于1M的文件
find /root -size +1M

案例19、查询小于1M的文件
find /root -size -1M

案例20、查询在3天以内创建的文件并删除
find /tmp -mtime -3 -type f -exec rm -rf {} \;
-exec : 处理查询之后的内容
{} : 代表的是查询到的内容
\ : 固定搭配

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

练习:要求将所有3天前创建的普通文件加上.bak后缀
find /tmp -ctime -3 -type f -exec mv {} {}.bak \;
  find /tmp -ctime -3 -type f | xargs -I {} mv {} {}.bak

Linux系统压缩包

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

缺陷:gzip不能压缩目录


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

缺陷:bzip不能压缩目录


注:gzip比bzip压缩率更大


3、tar
打包文件,不会删除原文件,
格式:
tar [参数] [压缩包名称]
参数:
-f : 指定压缩包名称
-c : 打包文件
-z : 指定使用gzip压缩,一般使用gzip压缩的文件都以.tar.gz作为扩展名
-j : 指定使用bzip2压缩,一般使用bzip2压缩的文件都以.tar.bz2作为扩展名
-v : 显示压缩包压缩的过程
-x : 解压,不需要指定压缩包的压缩类型,它会自动匹配压缩包的类型自行解压。
-P : 当压缩包中存在根目录时,自动移除根目录
-t : 查看压缩包中的内容
练习1:将/etc目录中的所有普通文件压缩成/tmp/etc.tar.gz文件
tar -czvPf /tmp/etc.tar.gz $(find /etc -type f | xargs)

知识储备:
$()   : 相当于数学中的()

知识储备:
-C : 解压至

练习2、解压一个.tar.gz的压缩包
  tar -x -f 1.txt.tar.gz
 
  练习3、查看压缩包内的内容
  tar -tf 1.txt.tar.gz

练习4、解压一个1.txt.tar.gz的压缩包解压至/mnt目录下
  tar -xf 1.txt.tar.gz -C /mnt

 

2、Linux中的管道

用于传输数据,可以将前一个命令的执行结果,交给管道之后的命令去处理
格式:
|

案例1:删除/tmp目录下一天以内创建的文件
find /tmp -ctime -1 -type f | xargs -I {} rm -rf {}

案例2:将etc中所有的普通文件,复制到/tmp目录中
find /etc -type f | xargs -I {} cp -r {} /tmp
posted @ 2021-11-06 20:16  vonmo  阅读(107)  评论(0编辑  收藏  举报