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)