O GNU tar
tem uma opção -C
(aka --directory
) para alterar o diretório antes de fazer qualquer coisa com o arquivo tar. Com isso, você poderia fazer algo assim:
for t in *.tgz ; do
bn="$(basename "$t" .tgz)"
mkdir -p "$bn"
tar xfz "$t" -C "$bn"
mv "$t" "$bn"
done