本文于 12 天前发布,最后更新于 10 天前
一、场景模拟
文件夹中有两个压缩包danshu.tar和shuangshu.tar
[root@primary qmql]# ll
total 24
-rw-r--r-- 1 root root 10240 Apr 24 15:34 danshu.tar
-rw-r--r-- 1 root root 10240 Apr 24 15:35 shuangshu.tar
先后解压两个压缩包
[root@primary qmql]# tar -xf danshu.tar
[root@primary qmql]# ll
total 24
-rw-r--r-- 1 root root 10240 Apr 24 15:34 danshu.tar
-rw-r--r-- 1 root root 0 Apr 24 15:31 file1
-rw-r--r-- 1 root root 0 Apr 24 15:31 file3
-rw-r--r-- 1 root root 0 Apr 24 15:32 file5
-rw-r--r-- 1 root root 0 Apr 24 15:32 file7
-rw-r--r-- 1 root root 0 Apr 24 15:32 file9
-rw-r--r-- 1 root root 10240 Apr 24 15:35 shuangshu.tar
[root@primary qmql]# tar -xf shuangshu.tar
[root@primary qmql]# ll
total 24
-rw-r--r-- 1 root root 10240 Apr 24 15:34 danshu.tar
-rw-r--r-- 1 root root 0 Apr 24 15:31 file1
-rw-r--r-- 1 root root 0 Apr 24 15:31 file2
-rw-r--r-- 1 root root 0 Apr 24 15:31 file3
-rw-r--r-- 1 root root 0 Apr 24 15:32 file4
-rw-r--r-- 1 root root 0 Apr 24 15:32 file5
-rw-r--r-- 1 root root 0 Apr 24 15:32 file6
-rw-r--r-- 1 root root 0 Apr 24 15:32 file7
-rw-r--r-- 1 root root 0 Apr 24 15:32 file8
-rw-r--r-- 1 root root 0 Apr 24 15:32 file9
-rw-r--r-- 1 root root 10240 Apr 24 15:35 shuangshu.tar
那么问题来了:将文件夹中的两个压缩包分别解压后,如需删除来自于danshu.tar包中的所有文件,同时保留来自于shuangshu.tar包的文件,有什么快速的方法,如何快速删除属于特定归档文件的内容,同时保留其他文件呢?
二、删除方法
[root@primary qmql]# tar -tvf danshu.tar
-rw-r--r-- root/root 0 2024-04-24 15:31 file1
-rw-r--r-- root/root 0 2024-04-24 15:31 file3
-rw-r--r-- root/root 0 2024-04-24 15:32 file5
-rw-r--r-- root/root 0 2024-04-24 15:32 file7
-rw-r--r-- root/root 0 2024-04-24 15:32 file9
[root@primary qmql]# tar -tvf shuangshu.tar
-rw-r--r-- root/root 0 2024-04-24 15:31 file2
-rw-r--r-- root/root 0 2024-04-24 15:32 file4
-rw-r--r-- root/root 0 2024-04-24 15:32 file6
-rw-r--r-- root/root 0 2024-04-24 15:32 file8
上述命令可以列出缩包中的文件,所以方法是
[root@primary qmql]# tar -tf danshu.tar | xargs rm -rf
[root@primary qmql]# ls
danshu.tar file2 file4 file6 file8 shuangshu.tar
使用 tar -tf 列出danshu.tar包中的所有文件,再通过管道符传递给xargs
命令转换为标准输入,最后传递给rm -rf
命令执行删除。