用反引号将find查找出来的文件一次性用tar打包压缩

1、查找/var目录下所有.log后缀的文件

[root@CentOS-01 20220730 11:01 ~]# find /var -name "*.log" -type f
/var/log/tuned/tuned.log
/var/log/audit/audit.log
/var/log/anaconda/anaconda.log
/var/log/anaconda/X.log
/var/log/anaconda/program.log
/var/log/anaconda/packaging.log
/var/log/anaconda/storage.log
/var/log/anaconda/ifcfg.log
/var/log/anaconda/ks-script-IA1Ytv.log
/var/log/anaconda/ks-script-tCHWYK.log
/var/log/anaconda/journal.log
/var/log/boot.log
/var/log/vmware-vmsvc.log
/var/log/yum.log
/var/log/vmware-network.3.log
/var/log/vmware-network.2.log
/var/log/vmware-network.1.log
/var/log/vmware-network.log

用反引号将find查找出来的文件一次性用tar打包压缩_第1张图片

2、使用管道和xargs参数过滤器将find查找出来的文件一次性打包压缩

[root@CentOS-01 20220730 11:02 ~]# find /var -name "*.log" -type f | xargs tar -zcf var-log-01.tar.gz 
tar: 从成员名中删除开头的“/”
[root@CentOS-01 20220730 11:09 ~]# ll
总用量 244
-rw-------. 1 root root   1304 7月  29 20:22 anaconda-ks.cfg
-rw-r--r--  1 root root 242610 7月  30 11:09 var-log-01.tar.gz

注意此处不能exec将find命令的结果交给tar来打包执行,当文件不止一个时,因为结果一个个传递打包,到最后打包压缩的只有最后一个find出来的文件!如下:可看到两条命令打包出来的文件大小差别非常大,就是因为exec传递执行tar命令最后只打包压缩了一个文件,其他都被最后一个覆盖了。

[root@CentOS-01 20220730 11:09 ~]# find /var -name "*.log"  -exec tar -zcf test.tar.gz {} \;
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
tar: 从成员名中删除开头的“/”
[root@CentOS-01 20220730 11:19 ~]# ll -h
总用量 248K
-rw-------. 1 root root 1.3K 7月  29 20:22 anaconda-ks.cfg
-rw-r--r--  1 root root  391 7月  30 11:19 test.tar.gz
-rw-r--r--  1 root root 237K 7月  30 11:09 var-log-01.tar.gz

用反引号将find查找出来的文件一次性用tar打包压缩_第2张图片 

4、或者采用反引号``来将find命令提前执行完成后用tar进行打包压缩,这是一个更简易的方法

[root@CentOS-01 20220730 11:19 ~]# tar -zcf var-log-02.tar.gz `find /var -name "*.log" -type f`
tar: 从成员名中删除开头的“/”
[root@CentOS-01 20220730 11:24 ~]# ll -h
总用量 488K
-rw-------. 1 root root 1.3K 7月  29 20:22 anaconda-ks.cfg
-rw-r--r--  1 root root  391 7月  30 11:19 test.tar.gz
-rw-r--r--  1 root root 237K 7月  30 11:09 var-log-01.tar.gz
-rw-r--r--  1 root root 237K 7月  30 11:24 var-log-02.tar.gz

用反引号将find查找出来的文件一次性用tar打包压缩_第3张图片

 反引号``还真的是个好东西哈。

你可能感兴趣的:(linux,centos)