Por favor, note que isso não foi testado, mas isso pode estar próximo ao que você está procurando:
#!/bin/bash
doExtract() {
local compressfile="${1}"
local rc=0
pushd "$(dirname "${compressfile}")" &> /dev/null
if [[ "${compressfile}" == *.tar ]]; then
echo "Extracting TAR: ${compressfile}"
tar -xvf "$(basename ${compressfile})"
rc=$?
elif [[ "${compressfile}" == *.zip ]]; then
echo "Extracting ZIP: ${compressfile}"
unzip "$(basename "${compressfile}")"
rc=$?
fi
popd &> /dev/null
if [[ ${rc} -eq 0 ]]; then
# You can remove the -i when you're sure this is doing what you want
rm -i "${compressfile}"
fi
return ${rc}
}
found=1
while [[ ${found} -eq 1 ]]; do
found=0
for compressfile in $(find . -type f -name '*.tar' -o -name '*.zip'); do
found=1
doExtract "${compressfile}"
rc=$?
if [[ $rc -ne 0 ]]; then
exit ${rc}
fi
done
done
Editar: este script procura recursivamente os arquivos que terminam em .tar
ou .zip
. Sem a disponibilidade da opção -C
para tar
, eu uso pushd
/ popd
para alterar para o diretório que contém os arquivos, extraí-los nesse diretório e, em seguida, retornar ao diretório anterior.