How do I delete a single file from a tar.gz archive

后端 未结 5 1982
花落未央
花落未央 2021-02-19 01:58

I have a huge tarbell archive with an excessively large or corrupt error_log that causes the archive to hang when attempting to extract it. Is there a way to remove this from th

5条回答
  •  野的像风
    2021-02-19 02:20

    I wanted to remove the jdk directory from the elasticsearch-oss archive with a one liner, and this is what I came up with:

    gzip -d elasticsearch-oss-7.10.1-linux-x86_64.tar.gz -c | tar --delete --wildcards */jdk | gzip - > /tmp/tmp.$$.tar.gz && mv /tmp/tmp.$$.tar.gz elasticsearch-oss-7.10.1-linux-x86_64.tar.gz
    

    I further refined this to include the download:

    curl -Ss https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.10.1-linux-x86_64.tar.gz | gzip -d - -c | tar --delete --wildcards */jdk | gzip - > elasticsearch-oss-7.10.1-linux-x86_64.tar.gz
    

    Works a treat on ubuntu 20.04, so gnu tar which does not support the @ sign.

提交回复
热议问题