gunzip e crie diretórios seguindo o nome do arquivo zip

0

Eu tenho o seguinte arquivo gzip: hdf5-1.8.18.tar.gz . Quando descompactar o arquivo com o seguinte comando:

gunzip < hdf5-1.8.18.tar.gz | tar xf -

Descompacta no seguinte diretório criado: hdf5-1.8.18 . Este diretório não é realmente conveniente para usar causa do "-", portanto, eu mudei o nome do diretório usando o seguinte comando:

mv hdf5-1.8.18 hdf5

Mas usando este comando eu perdi a informação da versão "1.8.18": Portanto, eu posso fazer uma solução feia como:

mkdir hdf5
mv hdf5-1.8.18 hdf5/1.8.18

Eu acho esta solução silenciosa, portanto, gostaria de saber se não há uma maneira mais direta de fazer isso. Obrigada!

    
por steve 07.06.2017 / 13:13

2 respostas

2

Você pode querer dar uma olhada na opção -C de tar .

tar zxf hdf5-1.8.18.tar.gz -C hdf

irá descompactar, descompactar, & coloque o diretório sob o hdf/ diretory.

    
por 07.06.2017 / 13:34
2

Antes de tudo, seria mais fácil se você redigitasse sua pergunta um pouco. Sente-se facilmente solucionável através de um script de algum tipo. A seguir deve funcionar em um script BASH. Execute-o com o nome do arquivo como primeiro argumento. Por exemplo, "./change_name_script.sh hdf5-1.8.18.tar.gz" e funcionará como quiser

#!/bin/bash
filename=$1

gunzip < $filename | tar xf -
move_filename=$(echo $filename | sed -r 's/.tar.gz$//')
first_part=$(echo "$move_filename" | sed -r 's/-.*$//')
second_part=$(echo "$move_filename" | sed -r 's/^.*-//')

mkdir $first_part
mv $move_filename $first_part/$second_part
    
por 07.06.2017 / 13:47