Você pode simplesmente fazer isso usando find -exec
sozinho.
find . -type f -name '*.zip' -exec unzip {} '*CTL*' -d "$target_dir" \;
Explicação: -exec
executará o seguinte comando em cada arquivo encontrado, onde {}
é substituído pelo nome do arquivo. O comando deve ser finalizado por ;
. Use \;
no final (';' escapou com \
) para evitar que seu shell interprete ;
como uma finalização para find
, em vez disso, ele é passado para find
como texto normal.
Além disso, observe que é uma boa prática incluir os padrões de arquivo entre aspas quando eles são transmitidos como argumentos, ou seja, '*CTL*'
em vez de apenas *CTL*
. Ao fazer isso, você evita que seu shell expanda os nomes dos arquivos. Por exemplo, suponha que, neste caso, um dos seus arquivos zip tenha CTL em seu nome de arquivo (digamos, abcCTL.zip
). Se você usar apenas *CTL*
para o padrão, o shell irá expandi-lo e, em vez de passar um padrão para unzip
, ele passará o nome do arquivo abcCTL.zip
, o que claramente não é o que você deseja.