Descompacte vários arquivos da linha de comando do Linux

Aqui vai uma dica rápida que irá ajudá-lo a trabalhar com vários arquivos zip na linha de comando.

Se você está em uma pasta e tem três arquivos zip nele (a.zipb.zipc.zip) que você deseja descompactar, “sem problema”, você pensa. “Eu posso cuidar disso com um único comando.” E você rapidamente, execute o seguinte:

No entanto, ao invés de o programa descompactar cada arquivo um após o outro, você recebe o seguinte:

Tenho certeza de que se trata não é o que você estava esperando. Eu sei que certamente não esperava isto. No entanto, este problema pode nos ajudar a compreender mais de como funciona a linha de comando.

O problema

Sempre que você usa o curinga (*), a própria shell expandirá isso e passará os resultados para o programa em vez do programa que gerencia a expansão em si. Isso significa que nosso comando anterior foi realmente expandido para o seguinte antes de ser executado:

Novamente, isso pode não parecer estranho, já que outros programas (tal comomkdirchmod, etc) pode levar um ou mais argumentos e repetir o processo para cada um. No entanto, unzip é diferente e, na verdade, tem uso para os argumentos adicionais. Se você especificar argumentos adicionais após o nome do arquivo zip, o Unzip tentará apenas extrair esses arquivos específicos do arquivo em vez de todos os arquivos.

O comando anterior para descompactar que deveria extrair b.zip e c.zip de dentro do arquivo a.zip. Como esses arquivos não existem dentro a.zip, obtemos o resultado de erro inesperado visto anteriormente.

Você pode pensar que você terá que descompactar manualmente cada arquivo um por vez, mas você estaria errado.

A solução

Apenas porque o shell expande caracteres curinga automaticamente não significa que os programas não podem também. A solução simples para este problema é citar o argumento para evitar que o shell a interprete:

Isso é tudo aí. Eu vi soluções de loops de codificação no script bash para encontrar correndo combinado com xargs, mas nada disso é necessário. Basta deixar o próprio comando de descompactar-se cuidar das coisas para você.

 

Fonte: https://chrisjean.com/unzip-multiple-files-from-linux-command-line/

Facebook Comments
5 (100%) 1 vote