Linux基本命令之find、tar命令

一、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    按照比某个文件更新的查找
  • 按照文件大小查找:
    • -size
      • +10M   查找文件大小大于10M的文件
      • -10M    查找文件大小小于10M的文件
      • 10M      查找文件大小差不多等于10M的文件
      • [root@scchen1 zengqilei]#  find /boot -size +10M   //查找/boot目录下大于10M的文件
  • 按照文件类型查找:
    • -type
      • d:文件夹(目录) directory

      • f:普通的文件 file

      • l:链接文件 link

      • c:字符设备文件 character

      • b:块设备文件 block

      • s:socket文件

      • p:pipe管道文件

      • [root@scchen1 zengqilei]# find   .   -type    d   //查找当前目录下的文件夹
  • 按照文件的属主查找:

    • -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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值