Faz o loop através do arquivo tar e executa comandos em cada arquivo

4

Eu tenho um processo de extrair novo código para meus servidores, onde o código é empacotado em um arquivo tar. Cada arquivo referenciado no tar é feito em um diretório específico. Eu gostaria de automatizar esse processo lendo o tar e processando cada arquivo de acordo. Como posso fazer isso em um script de shell?

Obrigado!

    
por Ken J 19.03.2014 / 14:39

2 respostas

1

Com o GNU tar você pode usar --to-command opção

Ele executará seu comando para cada arquivo no arquivo tar e no conteúdo do arquivo pipe para seu stdin.

Por exemplo, isso irá imprimir hashes sha1 para todos os arquivos no arquivo

tar -x -z -f archive.tar.gz --to-command 'echo $(sha1sum | cut -d  " " -f 1) $TAR_FILENAME'
    
por 10.01.2018 / 18:34
1

Usando o GNU Parallel:

tar xvf foo.tar | perl -ne 'print $last;$last=$_;END{print $last}' | parallel process file

10 segundos de instalação:

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

Para saber mais:

Assista ao vídeo de introdução para uma introdução rápida: link

Percorra o tutorial (man parallel_tutorial). Você linha de comando com amor por você.

    
por 19.03.2014 / 15:05