Torna arquivos somente arquivos tar sem diretórios (equivalente a zip -D -j)

3

Eu quero arquivos tar (e gzip) sem diretórios e não armazeno caminhos de diretórios. Eu quero apenas arquivos simples no meu arquivo.

Por exemplo, se eu fizer algo assim:

tar -czf archive.tgz /home/another/path/*

Então eu terei arquivos com caminhos no meu arquivo:

home/another/path/file1
home/another/path/file2
home/another/path/file3

Mas eu gostaria de ter apenas isso:

file1
file2
file3

Isto é equivalente ao comando zip -D -j do zip.

Para simplificar, vamos supor que não há subdiretórios dentro de /home/another/path/ - ele contém apenas arquivos.

Eu tentei sagacidade -C opção, mas não parece funcionar. Com o comando assim:

tar -C /home/another/path/ -czf archive.tgz *

O tar estava tentando arquivar arquivos no diretório atual em vez do diretório passado para -C . Estou usando (GNU tar) 1.19 .

    
por SiliconMind 26.02.2015 / 19:20

1 resposta

2

Tente o seguinte:

find . -type f -printf "%h\n%f\n" | xargs -L 2 tar -rf /tmp/files.tar -C 

ou alguma variação dependendo das suas necessidades. Deve-se considerar a segurança ao executar este comando. E se você estiver disposto a ter "./" antes do nome do arquivo, o seguinte pode ser um pouco mais seguro:

find -type f -execdir tar -rf /tmp/files.tar {} \;

ou

find -type f -execdir tar -rf /tmp/files.tar {} +
    
por 27.02.2015 / 21:13

Tags