首页 > 解决方案 > 如何使此命令从父目录 zip files/test.zip $(tar tf files/test.gz) 工作

问题描述

我有这个命令:

zip files/test.zip $(tar tf files/test.gz)

但它不起作用,因为 $(tar tf files/test.gz) 中的所有内容都在 files/ 中,所以 zip 找不到它。如果我将目录更改为文件并执行此文件,它会完美运行:

zip test.zip $(tar tf test.gz)

但我需要让它从父目录工作。

我的完整命令是:

tar xzf files/test.tar.gz && zip files/test.zip $(tar tf files/test.tar.gz) && rm -r -- $(tar tf files/test.tar.gz)

Linux 上是否有任何命令可以将 .tar.gz 文件转换为 .zip?

谢谢

标签: shellcommand-lineziptar

解决方案


我会为此制作一个小脚本。如果你有很多 tgz 文件要处理,你可以在它上面应用一个循环。

#!/bin/bash
TMP=/a/tmp/directory
TARGET=/dir/to/your/files
mkdir -p $TMP   
cd $TMP
tar -C $TMP -xzf $TARGET/your.tar.gz && zip $TARGET/your.zip *  
rm -rf $TMP

推荐阅读