可否有这样的经历,在工作环境下,解压了一个超大、文件超多的压缩包,比如,big-bag.tar.gz,解压的一瞬间,你猛然发现,忘记新建一个文件夹了,解压后的文件和原有的文件、文件夹混在一起了,是不是很崩溃,😦
可是,不要忘记,你现在使用的是Linux系统,没有Linux命令接解决不了的问题,一个不行,用两个。
先说解决方案:
$ tar -jxvf big-bag.tar.gz #这是手残解压的命令
$ tar -tf big-bag.tar.gz | xargs rm -rf #这是删除解压后的文件的命令
没错,就是这么简单!
说下原理,
- tar
- tf:这是tar的选项组合,-t用于打印压缩包中的文件,-f表示以档案的方式访问文件。
- xargs
这个命令厉害了,它以标准输入为参数,构建和执行命令,比如:
$ echo -l | xargs ls # xargs以-l作为参数,执行ls,等于执行ls -l
- 所以,删除解压后的文件的原理就是:以tar -tf 列出big-bag.tar.gz中的文件列表,然后,使用rm删除列表中的每个文件!
这就是,类Unix系统命令独特的魅力,命令+管道=组合威力:一个命令只做简单的一件事,做到极致,然后,通过管道"|",将多个命令组合起来,就可以完成十分复杂的功能。真是有趣🤔