Linux之文件压缩、查找

Day 5(云计算-zsn)

1.文件压缩解压缩(节省空间,提高传输速度)

常见压缩档
> *.rar       |    rar 程序压缩打包的档案;(在windows上很常见,但是是商业软件。)
> *.zip       |    zip 程序压缩打包的档案;  (很常见,但是因为不包含文档名编码信息,跨平台可能会乱码)
> *.gz        |   gzip 程序压缩的档案; (linux目前使用最广泛的压缩格式)
> *.bz2       |   bzip2 程序压缩的档案;
> *.xz        |    xz 程序压缩的档案;
> *.tar       |    tar 程序打包的资料,并没有压缩过;
> ***.tar.gz  |    tar 程序打包的档案,其中并且经过 gzip 的压缩 (最常见)**
> *.tar.bz2   |   tar 程序打包的档案,其中并且经过 bzip2 的压缩
> ***.tar.xz  |   tar 程序打包的档案,其中并且经过 xz 的压缩 (新一代压缩选择)**
> ***.7z      |  7zip 程序压缩打包的档案。

zip

zip  压缩文件名  文件名...   (可以同时对多个文件进行压缩)
zip  -r  压缩文件名  目录名...    压缩目录以及目录下所有文件
zip -m  压缩文件名  文件名        压缩文件中添加文件
zip -d   压缩文件名  文件名       删除压缩文件中的文件
unzip    压缩文件名              解压
unzip -v  压缩文件名             解压显示详细信息

gzip (常见)

gzip        gunzip=gzip -d
#注意: 以上压缩之后原始文件就没有了。

gzip test1.txt    
gzip -r dir1/  将dir1目录下的文本文件进行压缩
gzip -c test2.txt > test2.txt.gz  压缩但保留原始文件
zcat 文件名.gz    查看压缩过的文本文件内容

bzip2 (常见)

bzip2、bunzip2(=bzip2 -d)gzip有着更高的压缩率。       .bz2
bzip2  -z  man.config  //将man.config以bzip2压缩,此时man.config变成man.config.bz2
bzip2   -c man.config > man.config.bz2  //将man.config用最佳的压缩比压缩,并保留原本的档案
bzip2  -d  man.config.bz2 //将man.config.bz2解压缩,可用bunzip2取代bzip2  -d
bunzip2  man.config.bz2  //将man.config.bz2解压缩
:bzcat 文件名.bz2        //查看压缩过的文件内容

xz、unxz

xz -d = unxz    解压缩
xz test1.txt
unxz test1.txt.xz 
xz dir1/*   将目录下所有文件本文件分别进行压缩
xzcat test1.txt.xz 
zcat、zless、bzcat、bzless  不解压,显示压缩文件的内容

2.tar归档命令

格式:tar [选项] 打包文件名 被打包的源文件或目录列表
tar [选项] 打包文件名 [-C 目标文件夹]
常用选项:

选项功能
c创建.tar格式的包文件
x释放.tar格式的包文件
t查看包中的文件列表
v表示在命令执行时显示详细的提示信息
f 包文件名用于指定包文件名。当与-c选项一起使用时,创建的tar包文件使用该选项指定的文件名;当与-x选项一起使用时,则释放该选项指定的tar包文件。
p打包时保留文件及目录的权限。
z调用gzip程序,以gzip格式压缩或解压缩文件。
j调用bzip2程序,以bzip2格式压缩或解压缩文件。
J使用xz压缩(.tar.xz)。xz的压缩率通常比bzip2更高(即xz压缩的体积更小)。
C 目录路径名释放包时指定释放的目标的位置。
-P参数作用是保留绝对路径
  1. 创建(非压缩的)包文件
    命令:tar -cvf 包文件名 要打包的目录或文件名列表。
    功能:将指定的一个或多个文件或目录备份生成为一个指定的包文件。

    eg:tar -xvf 123.tar 将123.tar压缩包里面的内容释放出来

  2. 创建带压缩的包文件
    为节省存储空间,通常需要生成压缩格式的tar包文件,tar命令支持三种不同的压缩方式:
    命令:tar c[z j|J] f 压缩包文件名 要备份的目录或文件名

  3. 列出包文件中的文件列表
    命令:tar t[v]f 包文件名

  4. 提取包文件到指定目录
    格式:tar x [z j | J] [v]f 包文件名 [ -C 目标位置]

注:选项 f 一定要写在选项命令最后 (错误示范:-cfv或-fcv)

3.文件查找

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息。例如WindowsDOS操作系统中的path环境变量,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,系统除了在当前目录下面寻找此程序外,还应到path中指定的路径去找。用户通过设置环境变量,来更好的运行进程。

变量:变量来源于数学,是计算机语言中能储存计算结果或能表示抽象概念

变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变的。

在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和[Visual Basic](https://baike.baidu.com/item/Visual Basic/287852?fromModule=lemma_inlink)中);但另外一些语言可能使用其它概念(如C对象)来指称这种抽象,而不严格地定义“变量”的准确外延。

数据库:数据库是结构化信息或数据的有序集合,一般以电子形式存储在计算机系统中。通常由数据库管理系统 (DBMS) 来控制。在现实中,数据、DBMS 及关联应用一起被称为数据库系统,通常简称为数据库。

which

基于环境变量路径开始匹配文件,查找的是可执行文件 echo $PATH

whereis

基于环境变量路径开始匹配文件,查找的是所有文件

locate

全盘搜索,默认查找的是数据库中的数据文件,所以查找文件前需要更新数据库(updatedb)

find

全盘搜索,但不需要更新数据库

find 是 Linux 中强大的搜索命令,不仅可以按照文件名搜索文件,还可以按照权限、大小、时间、inode 号等来搜索文件。但是 find 命令是直接在硬盘中进行搜索的,如果指定的搜索范围过大,find命令就会消耗较大的系统资源,导致服务器压力过大。所以,在使用 find 命令搜索时,不要指定过大的搜索范围。

find [查找路径] 寻找条件 操作

find …/… -name 4 == find -name 4

find命令中的参数以及作用

参数作用
-name匹配名称 inum 通过索引节点号搜索
-perm 644匹配权限(mode为完全匹配,-mode为包含即可)
-user匹配所有者
-group匹配所有组
-mtime -n +n匹配修改内容的时间(-4指小于4天内的文件名;+4,大于4天前的文件名,不包括第4天的文件;4指前4~5那一天的文件) -cmin
-atime -n +n匹配访问文件的时间 -amin
-ctime -n +n匹配修改文件权限的时间 -cmin
-nouser匹配无所有者的文件
-nogroup匹配无所有组的文件
-newer f1 ! -newer f2匹配比文件f1新但比f2旧的文件 -a ”与“ ; -o “或” ; !(-not) “非” ;
-type b/d/c/p/l/f匹配文件类型(后面的字母参数依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
-size 50匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
*-exec …… {};后面可跟用于进一步处理搜索结果的命令 -ok -print
-mindepth n从第 n级目录开始搜索 eg: /etc 的第三级子目录开始搜索。 find /etc -mindepth 3
-maxdepth n表示至多搜索到第 n-1 级子目录。0当前目录
1.按照文件名搜索 find / -mtime -30
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
    -name: 按照文件名搜索
    -iname: 按照文件名搜索,不区分文件名大小写
    -inum: 按照 inode 号搜索
[root@kongd ~]# find /etc -name "host*" -print
2.按照文件大小搜索
[root@localhost ~]# find 搜索路径 [选项] 搜索内容
选项:
    -size [+|-]大小: 按照指定大小搜索文件
    这里的“+”的意思是搜索比指定大小还要大的文件, “-”的意思是搜索比指定大小还要小的文
    件  
3.按照修改时间搜索

Linux 中的文件有访问时间(atime)、数据修改时间(mtime)、状态修改时间(ctime)这三个
时间,我们也可以按照时间来搜索文件。

[root@localhost ~]# find 搜索路径 [选项] 搜索内容
find -atime n指查找 24*n小时到24*(n+1)小时内访问过的文件。   24*(n+1)>=time>=24*n
find -atime -n指查找 24*n小时内访问过的文件。   24*n>time
find -atime +n指查找 24*(n+1)小时以上访问过的文件   time>24*(n+1)

在这里插入图片描述

图中最右边为目前的时间,越往左边则代表越早之前的时间轴啦。
• +4代表大于等于5天前的档名: find /var -mtime +4
• -4代表小于等于4天内的文件档名:find /var -mtime -4
• 4则是代表4-5那一天的文件档名: find /var -mtime 4

命令类型

内置命令:执行速度快

help cd

cd --help

外置命令:执行速度相对较慢

cat --help

Linux中命令匹配顺序:

1.别名—> 2.命令缓存—> 3.通过系统环境变量中所定义的命令文件路径开始匹配

alias 命令别名

alias 查看当前用户的所有的命令别名

alias 别名=命令本身 alias cc = touch

​ alias tm=‘echo “当前系统的时间是date | cut -d " " -f 4”’

临时更改

vim /etc/bashrc 定义永久生效的别名,对系统中所有用户都生效

[root@localhost ~]# vim /etc/bashrc    

在这里插入图片描述

[root@localhost ~]# bash (或exit)  (在创建完别名后,可以先用bash命令运行一下系统,使别名写入主机 或者 通过exit命令重新进一次系统,达到使别名进入系统)
[root@localhost ~]# alias      查看主机的别名,来确定自定义别名以写入主机
alias cc='touch'
alias tm='echo 当前主机时间`date | cut -d " " -f 4`'

root用户下能够使用的别名,redhat用户也能使用

[redhat@localhost root]$ alias
alias cc='touch'
alias tm='echo 当前主机时间`date | cut -d " " -f 4`'
[redhat@localhost root]$ su
Password: 
[root@localhost ~]# alias
alias cc='touch'
alias tm='echo 当前主机时间`date | cut -d " " -f 4`'

vim ~/.bashrc 定义永久生效的别名,对系统中当前用户生效

[root@localhost ~]# alias time='echo 当前主机时间和日期`date | cut -d " " -f 4-6`'
[root@localhost ~]# time
当前主机时间和日期23:17:21 CST 2022
[root@localhost ~]# vim ~/.bashrc
[root@localhost ~]# bash
[root@localhost ~]# alias
alias time='echo 当前主机时间和日期`date | cut -d " " -f 4-6`'
[root@localhost ~]# su redhat               切换到redhat用户
[redhat@localhost root]$ alias              查看别名,结果没有time别名命令
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias tm='echo 当前主机时间`date | cut -d " " -f 4`'
alias vi='vim'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
[redhat@localhost root]$ 

unalias 取消别名 格式:unalias +别名名称

[root@localhost ~]# alias
alias cc='touch'          取消别名前存在的cc别名
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias tm='echo 当前主机时间`date | cut -d " " -f 4`'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
[root@localhost ~]# unalias cc     取消cc别名后,cc别名不存在了
[root@localhost ~]# alias
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias tm='echo 当前主机时间`date | cut -d " " -f 4`'
alias xzegrep='xzegrep --color=auto'
alias xzfgrep='xzfgrep --color=auto'
alias xzgrep='xzgrep --color=auto'
alias zegrep='zegrep --color=auto'
alias zfgrep='zfgrep --color=auto'
alias zgrep='zgrep --color=auto'
[root@localhost ~]# 

[root@localhost /]# tm ----tm不是别名命令,通过$PATH路径开始匹配是否有tm可执行文件

[root@localhost ~]# tm $PATH          表明tm是可执行文件
当前主机时间23:22:52 /home/redhat/.local/bin:/home/redhat/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

[root@localhost /]# alias tm=‘echo “当前系统时间date | cut -d " " -f 4”’

​ --创建了一个tm别名命令

​ tm --现在系统中匹配别名命令,通过别名找到命令本身.

eg:[root@localhost ~]# echo 当前主机时间`date | cut -d " " -f 4`
当前主机时间22:45:28
[root@localhost ~]# alias tm='echo 当前主机时间`date | cut -d " " -f 4`'
[root@localhost ~]# tm
当前主机时间22:47:02
                            --创建了一个tm别名命令

​ tm --现在系统中匹配别名命令,通过别名找到命令本身.

eg:[root@localhost ~]# echo 当前主机时间`date | cut -d " " -f 4`
当前主机时间22:45:28
[root@localhost ~]# alias tm='echo 当前主机时间`date | cut -d " " -f 4`'
[root@localhost ~]# tm
当前主机时间22:47:02
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值