remove arquivos após a inserção no tarball

1

Eu quero limitar o número de arquivos que são colocados em uma tarball e ativá-los depois de inseridos no tarball e serem independentes do diretório atual. Eu tentei isso: tar -C ~/semios/tmp/ -cjvf ~/semios/tmp/test.tar.bz2 $(cd ~/semios/tmp/; ls *| head -5) | xargs rm -f , mas isso deixa os arquivos onde estão, pois a opção detalhada de tar apenas imprime o nome do arquivo, não o caminho completo, achei que poderia corrigi-lo com o argumento -C , mas não parece ... alguma dica?

    
por cerr 03.05.2014 / 06:37

2 respostas

1

Assumindo que não há caracteres ruins (espaços em branco, novas linhas) nos caminhos:

... $(ls ~/semios/tmp/*| head -5) | xargs -d '\n' rm -f

ou

... | { cd ~/semios/tmp/; xargs -d '\n' rm -f; }

ou

tar -C ~/semios/tmp/ -cjvf ~/semios/tmp/test.tar.bz2 \
  $(cd ~/semios/tmp/; ls * | head -5 | 
    { while read file; do echo "$file"; rm -f "$file"; done;})

editar

Como xargs usa quaisquer espaços em branco como delimitadores por padrão, a nova linha deve ser definida como o único delimitador. Mas devido ao $() , este exemplo falharia mesmo com o espaço em branco no nome.

    
por 03.05.2014 / 07:21
0

ou

$ tar -cjf test.tar.bz2 $(find ~/semios/tmp/ -name "*"| head -5 | xargs rm -f)

    
por 03.05.2014 / 07:27