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
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.
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) -exec
executa o comando tar xvf
nos arquivos correspondentes (observe que ;
e {}
precisam de escape; consulte find(1)
para obter mais informações)