文件夹中的 tar + gz 文件按原样放入所有子文件夹中

文件夹中的 tar + gz 文件按原样放入所有子文件夹中

我们想要 tar.gz 以下所有 jar 文件

2.6.4.0-91/spark2/jars/super-csv-2.2.0.jar
2.6.4.0-91/spark2/jars/univocity-parsers-2.2.1.jar
2.6.4.0-91/spark2/jars/validation-api-1.1.0.Final.jar
2.6.4.0-91/spark2/jars/xbean-asm5-shaded-4.4.jar
2.6.4.0-91/spark2/jars/xercesImpl-2.9.1.jar
2.6.4.0-91/spark2/jars/xmlenc-0.52.jar
2.6.4.0-91/spark2/jars/xz-1.0.jar
2.6.4.0-91/spark2/jars/zookeeper-3.4.6.2.6.4.0-91.jar

所以我做了以下事情

cd /var/tmp
tar -czvf archive.tar.gz /usr/hdp/2.6.4.0-91/spark2/jars

但当我这样做时

tar xvf archive.tar.gz

我们得到 usr 文件夹

usr 

而预期的结果应该只是罐子(没有子文件夹)

    super-csv-2.2.0.jar
    univocity-parsers-2.2.1.jar
    validation-api-1.1.0.Final.jar
    xbean-asm5-shaded-4.4.jar
    xercesImpl-2.9.1.jar
    jxmlenc-0.52.jar
    xz-1.0.jar
    zookeeper-3.4.6.2.6.4.0-91.jar

我的语法有什么问题

 cd /var/tmp
 tar -czvf archive.tar.gz /usr/hdp/2.6.4.0-91/spark2/jars

答案1

在开始归档文件之前,使用-C选项让 tar进入目录:chdir

tar -czf archive.tar.gz -C /usr/hdp/2.6.4.0-91/spark2/jars .

不要忘记最后一个参数的点

请注意,参数后面的第一个参数f是将存档输出到的文件名,以下选项-C将目录名作为参数(其中 tarchdir为),然后点是开始存档的目录。

答案2

tar存储在命令行上传递的完整路径。

如果你只想要目录2.6.4.0-91,简单cd进入打电话tar

请记住,在这种情况下,您应该指定您希望存档以该-C选项结束的位置。

举个例子,假设您位于/home/user/

cd /usr/hdp/
tar -czvf -C /home/user/archive.tar.gz 2.6.4.0-91/spark2/jars/

相关内容