一、find命令:
1.用途:用于查找文件或目录
2.格式:find 【查找范围】【查找条件】【动作】
3.查找的对象:文件和文件夹
4.查找的范围:整个根目录
5.常用的查找条件:
- 按文件名查找:
- -name(查找时区分大小写)
- -iname(查找时不区分大小写)
[root@scchen1 lianxi]# touch xiao{1..10}.txt [root@scchen1 lianxi]# touch XIAO{1..10}.TXT [root@scchen1 lianxi]# ls xiao10.txt XIAO2.TXT xiao5.txt XIAO7.TXT XIAO10.TXT xiao3.txt XIAO5.TXT xiao8.txt xiao1.txt XIAO3.TXT xiao6.txt XIAO8.TXT XIAO1.TXT xiao4.txt XIAO6.TXT xiao9.txt xiao2.txt XIAO4.TXT xiao7.txt XIAO9.TXT [root@scchen1 lianxi]# find . -name "*xiao*" ./xiao8.txt ./xiao1.txt ./xiao9.txt ./xiao4.txt ./xiao6.txt ./xiao7.txt ./xiao5.txt ./xiao2.txt ./xiao10.txt ./xiao3.txt [root@scchen1 lianxi]# find . -iname "*xiao*" ./XIAO5.TXT ./XIAO3.TXT ./xiao8.txt ./xiao1.txt ./xiao9.txt ./xiao4.txt ./xiao6.txt ./XIAO1.TXT ./XIAO6.TXT ./xiao7.txt ./xiao5.txt ./XIAO4.TXT ./XIAO10.TXT ./xiao2.txt ./XIAO9.TXT ./XIAO8.TXT ./xiao10.txt ./XIAO2.TXT ./xiao3.txt ./XIAO7.TXT
- 按文件更改时间查找 :
[root@scchen1 lianxi]# find . -newer fengdeyong.txt //查找当前目录下比fengdeyong.txt更新的文件
- -mtime n 表示n个24小时
- -mtime +7 表示7个24小时前,也就是7天之前
- -mtime -7 表示7个24小时之内,也就是7天之内
- -mtime 7 表示刚好7天前的那一天
-
[root@scchen1 lianxi]# find . -mtime +3 //查找当前目录下,3天内有所更改的文件
- -mmin n 表示n分钟
- -mmin +20 表示20分钟以前
- -mmin -20 表示20分钟以内
-
[root@scchen1 lianxi]# find . -mmin +20 //表示查找当前目录下,20分钟以前有所改动的文件
- -newer 按照比某个文件更新的查找
- -mtime n 表示n个24小时
- 按照文件大小查找:
- -size
- +10M 查找文件大小大于10M的文件
- -10M 查找文件大小小于10M的文件
- 10M 查找文件大小差不多等于10M的文件
-
[root@scchen1 zengqilei]# find /boot -size +10M //查找/boot目录下大于10M的文件
- -size
- 按照文件类型查找:
- -type
-
d:文件夹(目录) directory
-
f:普通的文件 file
-
l:链接文件 link
-
c:字符设备文件 character
-
b:块设备文件 block
-
s:socket文件
-
p:pipe管道文件
-
[root@scchen1 zengqilei]# find . -type d //查找当前目录下的文件夹
-
- -type
-
按照文件的属主查找:
-
-user
-
-
[root@scchen1 lianxi]#useradd cs //创建新用户cs [root@scchen1 lianxi]# find / -user cs //查找根目录下用户cs的文件或目录
- 按照目录的深度查找:
- -maxdepth
[root@scchen1 zh]# find /zh -maxdepth 1 -name "*.txt" //1代表当前这一级目录,2代表下一级目录,以此类推
6.查找条件的组合:
-a and 逻辑与 并且——》都要满足,是默认状态
-o or 逻辑或 或者——》满足其中一个
-not ! 逻辑非 取反
-a的优先级比-o优先级要高,()的优先级比-a高,默认下就是-a,所以可以省略不写
[root@scchen1 lianxi]# find /boot -size +5M -a -type f -a -name "*linuz*" //查找/boot目录下大于5M,并且文件类型是普通文件,文件名中含有linuz的文件
[root@scchen1 lianxi]# find /boot -size +5M -type f -name "*linuz*" // 与上面一条代码作用相等,所以以后可以不用加上-a
[root@scchen1 lianxi]# find /boot -size +5M -a -type f -o -name "*linuz*" //先算前面-a再算后面-o
[root@scchen1 lianxi]# find /boot -size +5M \( -type f -o -name "*linuz*" \) //改变优先级,使用转义符号以及圆括号(转义符号是转换到字符最原始的含义),直接写()会报错
[root@scchen1 lianxi]# find /boot ! -size +3M //查找/boot目录下文件大小小于3M的文件
7.find命令执行的动作:查找出来文件或者文件夹后,可以执行删除、复制、移动等操作
选项是 -exec和-ok(这个需要再手动确认)
[root@scchen1 ~]# find /lianxi -name "*.txt" -type f -exec cp {} back \; //查找/lianxi目录下名字是.txt结尾的文件,并且将其复制到back目录下
-exec cp {} back \; ——》{}代表前面的find命令查找到的符合条件的文件,可以理解为一个存放文件的地方,一个容器 ——》\;表示-exec选项执行的命令的结束标志
8.小练习:
1.[root@scchen1 zengqilei]# find / -name "*.txt"
2.[root@scchen1 zengqilei]# find /lianxi -type d
3.[root@scchen1 zengqilei]# find /lianxi -type f | wc -l
5
4.[root@scchen1 zengqilei]# find / -iname "*.conf"
5.[root@scchen1 zengqilei]# find /boot -size +3M -name "*linuz*"
二.压缩类命令:
为什么要打压缩包:备份的时候,能够节省空间;网络传送的时候,能节约时间
windows里的压缩文件,只有少部分可以在Linux中解压,但是Linux里的压缩包可以在Windows里解压
.zip格式的压缩文件可以在Linux和Windows里解压,.tar.gz可以在Windows和Linux里解压
小结:
命令——》压缩包后缀名——》解压缩命令
zip——》.zip——》unzip
gzip——》.gz——》gunzip 推荐使用
xz——》.xz——》unxz 推荐使用
bzip2——》.bz2——》bunzip2
[root@scchen1 lianxi]# zip chen.zip chen.txt // 将chen.txt压缩成chen.zip文件,前者是压缩文件后者是源文件
[root@scchen1 backup]# unzip chen.zip //unzip解压缩文件,会产生一个chen.txt
Archive: chen.zip
extracting: chen.txt
[root@scchen1 backup]# ls
chen.txt chen.zip feng passed.zip sc
[root@scchen1 backup]# zip -r backup.zip backup 给backup文件夹打压缩包叫backup.zip
-r 是对文件夹进行压缩,将文件夹里的子文件和子文件夹都压缩到一个文件里
[root@scchen1 backup]# gzip passwd 直接在源文件上打压缩包,压缩包的后缀名是.gz,gzip一般压缩文件而不是文件夹
[root@scchen1 backup]# gunzip passwd.gz 解压缩.gz文件
[root@scchen1 backup]# zcat passwd.gz 查看.gz压缩文件里的内容
[root@scchen1 lianxi]# xz hosts 打压缩包,跟gzip类似,后缀名是.xz,压缩效果最好,但是时间较长
[root@scchen1 lianxi]# unxz hosts.xz 解压缩包
[root@scchen1 lianxi]# bzip2 wangxin.txt 打压缩包,后缀名是.bz2
[root@scchen1 lianxi]# bunzip2 wangxin.txt.bz2 解压缩
tar命令:是制作归档文件,解压归档文件;可以对文件和文件夹进行压缩
归档文件:理解是一个打包的文件,这个文件里可以包含很多个文件——》没有压缩的
压缩文件:可以是在归档文件的基础上,对归档文件进行压缩
-z——》背后是tar命令调用gzip对归档文件进行压缩
-j——》背后是tar命令调用bzip2对归档文件进行压缩
-J——》背后是tar命令调用xz对归档文件进行压缩
创建压缩文件:
tar -czf ——》 .tar.gz
[root@scchen1 sc]# tar -czf huan.tar.gz huan.txt 将huan.txt文件打压缩包叫huan.tar.gz
[root@scchen1 sc]# tar -czf huan.tar.gz huan.txt boot 后面打包的压缩文件会替换原来的压缩内容
[root@scchen1 sc]# tar -czfv huan.tar.gz huan.txt boot 可以看到压缩的过程
tar -cjf——》.tar.bz2
[root@scchen1 sc]# tar -cjf huan.tar.bz2 huan.txt 将huan.txt文件打压缩包叫huan.tar.bz2
tar -cJf——》.tar.xz
[root@scchen1 sc]# tar -cJf huan.tar.xz huan.txt 将huan.txt文件打压缩包叫huan.tar.xz
查看压缩文件:-tf可以查看tar命令打得压缩包的各种格式的压缩文件
[root@scchen1 sc]# tar -tf huan.tar.gz
解压缩文件:
[root@scchen1 hj]# tar xf huan.tar.gz 解压后的文件存放到当前的文件夹里
[root@scchen1 hj]# tar xvf huan.tar.gz 能看到解压的过程
使用绝对路径打压缩,指定路径
1.新建/backup文件夹
[root@scchen1 hj]# mkdir -p /backup
2.将/boot目录和/etc/passwd文件,打压缩包存放到/backup目录下,叫boot_passed.tar.gz
[root@scchen1 hj]# tar czf /backup/boot_passwd.tar.gz /etc/passwd /boot
tar: 从成员名中删除开头的“/”
练习:
[root@scchen1 lianxi]# mkdir tar
[root@scchen1 lianxi]# cd tar
[root@scchen1 tar]# cp /etc/hosts /etc/passwd tar
[root@scchen1 tar]# cp /boot . -r
[root@scchen1 tar]# tar czf /lianxi/tar/boot.tar.gz ./boot
[root@scchen1 tar]# tar -tf boot.tar.gz
[root@scchen1 tar]# tar cJf host_passwd.tar.bz2 hosts passwd
[root@scchen1 tar]# tar -tf host_passwd.tar.bz2
[root@scchen1 tar]# tar cJf /lianxi/boot_pw_log.tar.xz /boot /etc/passwd /var/log
[root@scchen1 tar]# mkdir /bak
[root@scchen1 tar]# cp /lianxi/boot_pw_log.tar.xz /bak
[root@scchen1 tar]# tar -tf /bak/boot_pw_log.tar.xz
把当前目录下的压缩包能否解压到其他的目录里:-C的作用是指定解压的目录
[root@scchen1 lianxi]# tar xf boot_pw_log.tar.xz -C /song
将其他目录的文件打包备份到一个固定的目录下:使用绝对路径
例如:将/etc/passwd /var/log /etc/hosts 备份到/song/pw_log_hosts.tar.gz
[root@scchen1 lianxi]# tar czf /song/pw_log_hosts.tar.gz /etc/passwd /var/log /etc/hosts
tar命令中的排除功能:--exclude
[root@scchen1 boot]# tar --exclude=/boot/{grub,grub2} -czf /lianxi/no-grub-boot.tar.gz /boot 排除两个
[root@scchen1 boot]# tar --exclude=/boot/grub2 -czf /lianxi/no-grub2-boot.tar.gz /boot 排除一个
将/boot目录下的除grub目录以外的所有文件都备份到/bak目录下no-grub.tar.gz
[root@scchen1 lianxi]# tar --exclude=/boot/grub -czf /bak/no-grub.tar.gz /boot
使用一条命令打包/mydata/目录,并且排除/mydata/目录下的log目录
[root@scchen1 mydata]# tar --exclude=/mydata/log -czf /lianxi/data.tar.gz /mydata