Existem essencialmente duas opções para percorrer toda a árvore de diretórios:
Você pode usar find(1)
:
find . -name '*.gz' -exec gzip -d "{}" \;
ou se o seu shell tiver globalização recursiva, você poderá fazer algo como:
for file in **/*.gz; do gzip -d "$file"; done