零基础学习Linux系统的文件查找、压缩及解压

零基础学习Linux系统的文件查找、压缩及解压记录

文件查找

查找命令文件(which)
which命令的功能是用于查找命令文件,能够快速搜索二进制程序所对应的位置。
如果我们既不关心同名文件(find与locate),也不关心命令所对应的源代码和帮助文件(whereis),
仅仅是想找到命令本身所在的路径,那么这个which命令就太合适了。

语法格式:which [参数] 文件
参数:
	-n	指定文件名长度(不含路径)
	-p	指定文件名长度(含路径)
	-w 	指定输出时栏位的宽度
	-V	显示版本信息
# 查找某个指定命令文件所在位置
[root@study ~]# which reboot
/sbin/reboot
# 查找多个指定命令文件所在位置
[root@study ~]# which shutdown poweroff
/sbin/shutdown
/sbin/poweroff
根据路径和条件搜索指定文件(find)
find命令的功能是根据给定的路径和条件查找相关文件或目录,可以使用的参数很多,并且支持正则表达式,结合管道符后能够实现更加复杂的功能,
是系统管理员和普通用户日常工作必须掌握的命令之一。

find命令通常进行的是从根目录(/)开始的全盘搜索。

语法格式:find [路径] [参数]

参数;
	-name	匹配名称
	-perm	匹配权限(mode为完全匹配,-mode为包含即可)
	-user	匹配所有者
	-group	匹配所有组
	-mtime -n +n	匹配修改内容的时间(-n指n天以内,+n指n天以前)
	-atime -n +n	匹配访问文件的时间(-n指n天以内,+n指n天以前)
	-ctime -n +n	匹配修改文件权限的时间(-n指n天以内,+n指n天以前)
	-nouser	匹配无所有者的文件
	-nogroup	匹配无所有组的文件
	-newer f1 !f2	匹配比文件f1新但比f2旧的文件
	-type b/d/c/p/l/f	匹配文件类型(后面的字幕字母依次表示块设备、目录、字符设备、管道、链接文件、文本文件)
	-size	匹配文件的大小(+50KB为查找超过50KB的文件,而-50KB为查找小于50KB的文件)
	-prune	忽略某个目录
	-exec …… {}\;	后面可跟用于进一步处理搜索结果的命令

全盘搜索系统中所有以.conf结尾的文件

[root@study ~]# find / -name *.conf
/run/NetworkManager/resolv.conf
/run/tmpfiles.d/kmod.conf
/run/systemd/system/session-25.scope.d/50-TasksMax.conf
/run/systemd/system/session-25.scope.d/50-SendSIGHUP.conf
/run/systemd/system/session-25.scope.d/50-After-systemd-user-sessions\x2eservice.conf
/run/systemd/system/session-25.scope.d/50-After-systemd-logind\x2eservice.conf
/run/systemd/system/session-25.scope.d/50-Description.conf
/run/systemd/system/session-25.scope.d/50-Slice.conf

………………省略部分输出信息………………

在/etc目录中搜索所有大于1M大小的文件

[root@study ~]# find /etc -size +1M
/etc/selinux/targeted/active/policy.kern
/etc/selinux/targeted/contexts/files/file_contexts.bin
/etc/selinux/targeted/policy/policy.31
/etc/udev/hwdb.bin
/etc/brltty/zh-tw.ctb

在/home目录中搜索所有属于指定用户的文件

[root@study ~]# find /home -user vbird2
/home/vbird2
/home/vbird2/.mozilla
/home/vbird2/.mozilla/extensions
/home/vbird2/.mozilla/plugins
/home/vbird2/.bash_logout
/home/vbird2/.bash_profile
/home/vbird2/.bashrc
/home/vbird2/.cache
/home/vbird2/.cache/abrt
/home/vbird2/.cache/abrt/lastnotification
/home/vbird2/.config
/home/vbird2/.config/abrt
/home/vbird2/.bash_history

列出当前工作目录中的所有文件、目录以及子文件信息

[root@study ~]# find .
.
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc
./anaconda-ks.cfg
./.cache
./.cache/dconf
./.cache/dconf/user
./.cache/abrt
./.cache/abrt/lastnotification
./.dbus
./.dbus/session-bus
./.dbus/session-bus/347237bdacab4a2e8d2926bf07fed659-9
./initial-setup-ks.cfg
./.config
./.config/abrt
./.bash_history
./test.txt
./file
./file-h1
./.viminfo

在/var/log目录下搜索所有指定后缀的文件,后缀不需要大小写

[root@study ~]# find /var/log -iname "*.log"
/var/log/audit/audit.log
/var/log/gdm/:0.log
/var/log/gdm/:0-greeter.log
/var/log/tuned/tuned.log
/var/log/anaconda/anaconda.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
	
………………省略部分输出信息………………

在/var/log目录下搜索所有后缀不是.log的文件

[root@study ~]# find /var/log ! -name "*.log"
/var/log
/var/log/tallylog
/var/log/grubby_prune_debug
/var/log/lastlog
/var/log/wtmp
/var/log/btmp

………………省略部分输出信息………………

搜索当前工作目录中的所有近7天被修改过的文件

[root@study ~]# find . -mtime +7
./.bash_logout
./.bash_profile
./.bashrc
./.cshrc
./.tcshrc

全盘搜索系统中所有类型为目录,且权限为1777的目录文件

[root@study ~]# find / -type d -perm 1777
/dev/mqueue
/dev/shm
/var/tmp
/var/tmp/systemd-private-2e2d82e131b640e486ec78327aa183f4-chronyd.service-N698hC/tmp
/var/tmp/systemd-private-2e2d82e131b640e486ec78327aa183f4-rtkit-daemon.service-fAbuMQ/tmp
/var/tmp/systemd-private-2e2d82e131b640e486ec78327aa183f4-cups.service-ZgzjWi/tmp
/var/tmp/systemd-private-2e2d82e131b640e486ec78327aa183f4-bolt.service-MFVjb1/tmp
………………省略部分输出信息………………

全盘搜索系统中所有后缀为.mp4的文件,并删除所有查找到的文件

[root@study ~]# find / -name "*.mp4" -exec rm -rf {} \;
强大的文本搜索工具(grep)
grep命令是用于全面搜索的正则表达式,并将结果输出。
人们通常会将grep命令与正则表达式搭配使用,
参数作为搜索过程中的补充或对输出结果的筛选,命令模式十分灵活。

语法格式: grep [参数] 文件

参数:
	-i	忽略大小写
	-c	只输出匹配行的数量
	-l	只列出符合匹配的文件名,不列出具体的匹配行
	-n	列出所有的匹配行,显示行号
	-h	查询多文件时不显示文件名
	-s	不显示不存在、没有匹配文本的错误信息
	-v	显示不包含匹配文本的所有行
	-w	匹配整词
	-x	匹配整行
	-r	递归搜索
	-q	禁止输出任何结果,已退出状态表示搜索是否成功
	-b	打印匹配行距文件头部的偏移量,以字节为单位
	-o	与-b结合使用,打印匹配的词据文件头部的偏移量,以字节为单位
	-F	匹配固定字符串的内容
	-E	支持扩展的正则表达式

搜索某个文件中,包含某个关键词的内容

[root@study ~]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

搜索某个文件中,以某个关键词开头的内容

[root@study ~]# grep ^root /etc/passwd
root:x:0:0:root:/root:/bin/bash

搜索某个文件中,包含某个关键词位置的行号及内容

[root@study ~]# grep -n network anaconda-ks.cfg 
17:network  --bootproto=static --device=ens33 --ip=192.168.70.100 --netmask=255.255.255.0 --ipv6=auto --activate
18:network  --hostname=study.centos.vbird

文件压缩、解压

tar命令 – 压缩和解压缩文件
tar命令的功能是用于压缩和解压缩文件,能够制作出Linux系统中常见的.tar、.tar.gz、.tar.bz2等格式的压缩包文件。
对于RHEL7、CentOS7版本以后的系统,解压时可以不加压缩格式参数(如z或j),系统能自动进行分析并解压。

语法格式:tar 参数 文件或目录

参数:
	-A	新增文件到以存在的备份文件
	-B	设置区块大小
	-c	建立新的备份文件
	-C <目录>	仅压缩指定目录里的内容或解压缩到指定目录
	-d	记录文件的差别
	-x	从归档文件中提取文件
	-t	列出备份文件的内容
	-z	通过gzip指令压缩/解压缩文件,文件名最好为*.tar.gz
	-Z	通过compress指令处理备份文件
	-f<备份文件>	指定备份文件
	-v	显示指令执行过程
	-r	添加文件到已经压缩的文件
	-u	添加改变了和现有的文件到已经存在的压缩文件
	-j	通过bzip2指令压缩/解压缩文件,文件名最好为*.tar.bz2
	-v	显示操作过程
	-l	文件系统边界设置
	-k	保留原有文件不覆盖
	-m	保留文件不被覆盖
	-w	确认压缩文件的正确性
	-p	保留原来的文件权限与属性
	-P	使用文件名的绝对路径,不移除文件名称前的“/”号
	-N <日期格式>	只将较指定日期更新的文件保存到备份文件里
	-- -exclude=<范本样式>	排除符合范本样式的文件
	-- -remove-files	归档/压缩之后删除源文件

使用gzip压缩格式对某个目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.gz

# 将目录aa压缩为aa.tar.gz
[root@study tmp]# tar czvf aa.tar.gz aa
aa/

使用bzip2压缩格式对某个目录进行打包操作,显示压缩过程,压缩包规范后缀为.tar.bz2

# 将目录aa压缩为aa.tar.bz2
[root@study tmp]# tar -cjvf aa.tar.bz2 aa
aa/

将当前工作目录内所有以.cfg为后缀的文件打包,不进行压缩

[root@study ~]# tar cvf backup3.tar *.cfg
anaconda-ks.cfg
initial-setup-ks.cfg

解压某个压缩包到当前工作目录

# 解压aa.tar.gz到当前目录
[root@study tmp]# tar xvf aa.tar.gz 
aa/

解压某个压缩包到指定目录

# 解压bb.tar.gz文件到/tmp目录下
[root@study ~]# tar xvf bb.tar.gz -C /tmp
bb/

查看某个压缩包内文件信息(无需解压)

[root@study ~]# tar tvf backup3.tar 
-rw------- root/root      2172 2022-11-12 15:05 anaconda-ks.cfg
-rw-r--r-- root/root      2220 2022-11-12 15:06 initial-setup-ks.cfg
gzip命令 – 压缩和解压文件
gzip命令是用于压缩和解压文件。
gzip是一款使用广泛的压缩工具,文件经过压缩后一般会以.gz后缀结尾,与tar命令合用后即为.tar.gz后缀。

语法格式:gzip [参数] 文件

参数:
	-a	使用ASCII文字模式
	-d	解开压缩文件
	-f	强行压缩文件
	-l	列出压缩文件的相关信息
	-c	把压缩后的文件输出到标准输出设备,不去更动原始文件
	-r	递归处理,将指定目录下的所有文件及子目录一并处理
	-q	不显示警告信息

将指定的文件进行压缩,压缩包默认会以“原文件名.gz”保存到当前工作目录下,原文件会被自动删除

[root@study ~]# gzip test.txt 

解压指定的压缩包文件,并显示解压过程。解压后的文件会保存在当前工作目录下,压缩包会被自动删除

[root@study ~]# gzip -dv test.txt.gz 
test.txt.gz:      0.0% -- replaced with test.txt
bzip2命令 – bz2文件的压缩程序
Linux系统中bzip2命令的英文是“bunzip2”,即.bz2文件格式的压缩程序; bzip2命令系统默认是没有安装的,需要安装bzip2库才可以使用此命令。
若没有加上任何参数,bzip2压缩完文件后会产生.bz2的压缩文件,并删除原始的文件。

语法格式:bzip2 [参数] 文件

参数:
	-c	将压缩与解压缩的结果送到标准输出
	-d	执行解压缩
	-f	bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖,请使用此参数
	-k	bzip2在压缩或解压缩后,会删除原始的文件。若要保留原始文件,请使用此参数
	-s	降低程序执行时内存的使用量
	-t	测试.bz2压缩文件的完整性
	-v	压缩或解压缩文件时,显示详细的信息
	-z	强制执行压缩

压缩文件

[root@study ~]# bzip2 test.txt 

检查文件完整性

[root@study ~]# bzip2 -t test.txt.bz2 

解压缩文件

[root@study ~]# bzip2 -d test.txt.bz2 
7z命令 – 文件解压缩命令
7z命令是用于文件解压缩工作。
7-zip应该是Linux系统中常用的解压缩工具了,7z是一种压缩格式,具备较高的压缩比率,对文本文件尤其有效。

语法格式:7z [参数] 文件

参数:
	a 	添加文件到压缩包
	d	从压缩包中删除文件
	e	从压缩包中提取文件
	t	测试压缩包是否完整
	u	更新压缩包中的文件
	
在Linux系统中是没有7z这个命令,需要执行yum -y install p7zip先进行安装

对指定的目录进行压缩工作,完成的压缩包以7z为后缀

[root@study ~]# 7za a bb.7z bb

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=zh_CN.UTF-8,Utf16=on,HugeFiles=on,64 bits,8 CPUs AMD Ryzen 7 4800H with Radeon Graphics          (860F01),ASM,AES-NI)

Scanning the drive:
2 folders, 1 file, 54 bytes (1 KiB)

Creating archive: bb.7z

Items to compress: 3

    
Files read from disk: 1
Archive size: 224 bytes (1 KiB)
Everything is Ok

对指定的压缩包文件进行解压缩工作

[root@study ~]# 7za x bb.7z
zip命令 – 压缩文件
zip命令的功能是用于压缩文件,解压命令为unzip。
通过zip命令可以将文件打包成.zip格式的压缩包,里面会附含文件的名称、路径、创建时间、上次修改时间等等信息,与tar命令相似。

语法格式:zip 参数 文件
参数:
	-q	不显示指令执行过程
	-r	递归处理,将指定目录下的所有文件和子目录一并处理
	-z	替压缩文件加上注释
	-v	显示指令执行过程或显示版本信息
	-d	更新压缩包内文件
	-n<字尾字符串>	不压缩具有特定字尾字符串的文件

将指定目录及其内全部文件都打包成zip格式压缩包文件

[root@study ~]# zip -r bb.zip bb
  adding: bb/ (stored 0%)
  adding: bb/cc/ (stored 0%)
  adding: bb/cc/file.txt (deflated 24%)

将当前工作目录内所有以.cfg为后缀的文件打包

[root@study ~]# zip -r backup2.zip *.cfg
  adding: anaconda-ks.cfg (deflated 48%)
  adding: initial-setup-ks.cfg (deflated 48%)

更新压缩包文件中某个文件

[root@study ~]# zip -dv backup2.zip anaconda-ks.cfg 
1>1: updating: anaconda-ks.cfg (deflated 48%)
unzip命令 – 解压缩zip格式文件
unzip命令用于解压缩zip格式文件。
直接使用unzip命令解压缩文件后,压缩包内原有的文件会被提取并输出保存到当前工作目录下。

语法格式:unzip [参数] 压缩包

参数:
	-l	显示压缩文件内所包含的文件
	-v	执行时显示详细的信息
	-c	将解压缩的结果显示到屏幕上,并对字符做适当的转换
	-n	解压缩时不要覆盖原有的文件
	-j	不处理压缩文件中原有的目录路径

将压缩包文件解压到当前工作目录中

[root@study ~]# unzip 001.zip 

将压缩包文件解压到指定的目录中

[root@study ~]# unzip 001.zip -d /tmp

测试压缩包文件是否完整,文件有无损坏

[root@study ~]# unzip -t 001.zip 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值