能否通过单条命令将tar压缩包内容同时解压到两个目录?
单次解压tar包到两个不同目录的实现方法
可以实现,不需要重复读取解压tar包,通过 tee 命令配合管道即可完成单次操作双路径解压。
通用实现命令(兼容Bash等绝大多数Shell环境)
# 先提前创建两个目标目录(不存在的话) mkdir -p /目标/目录1 /目标/目录2 # 单次解压到两个目录 tee >(tar -xf - -C /目标/目录1) >(tar -xf - -C /目标/目录2) < fileName.tar
参数说明
- 用
-替代文件名作为tar的输入源,代表从标准输入读取tar包内容 -C参数用于指定tar命令的工作目录,也就是解压输出的目标路径tee命令会将读取到的源tar包内容同步输出到后面的两个子进程,全程仅读取一次源文件,大体积tar包下效率远高于两次单独解压
特殊场景适配
- 如果需要查看解压过程的日志,把两个tar命令里的
-xf改成-xvf即可 - 如果是带压缩的tar包,比如
.tar.gz/.tar.bz2/.tar.xz,在tar命令中添加对应的解压参数即可,以gzip格式为例:
tee >(tar -xzf - -C /目标/目录1) >(tar -xzf - -C /目标/目录2) < fileName.tar.gz
内容的提问来源于stack exchange,提问作者Sofia190
相关产品推荐
相关产品推荐

