Como faço para descompactar um conjunto de arquivos em um diretório?

0

Existem cerca de 10.000 arquivos no diretório, alguns dos quais são .fits e alguns são .tar. Agora, preciso descompactar apenas os arquivos .tar. Embora a execução de uma condição if pareça razoável, o comando untar "xvf" só funciona em uma base por arquivo, o que anula o uso de um loop.

    
por Aditya Guha 30.01.2017 / 08:21

2 respostas

3

the untar command "xvf" only works on a per-file basis

que torna necessário o uso de loop :

for file in ./*.tar; do tar xvf "$file"; done
    
por 30.01.2017 / 08:38
2

Na verdade, com find você pode fazer o trabalho sem loops. Assim:

find -iname '*.tar' -maxdepth 1 -exec tar xvf '{}' \;

A lógica é assim:

  • -iname corresponde arquivos com extensão .tar (insensitivo a maiúsculas) e
  • -maxdepth 1 limita o intervalo de correspondência para profundidade 1 (para que ./*/*.tar e semelhantes não sejam correspondidos)
  • finalmente, -exec executa o comando tar xvf nos arquivos correspondentes (observe que ; e {} precisam de escape; consulte find(1) para obter mais informações)
por 01.02.2017 / 10:10

Tags