Pensei em usar a opção -exec para find , mas isso não funcionaria devido ao operador de redirecionamento usado com o comando gunzip . Uma solução seria executar a operação em duas etapas:
1. Copie os arquivos em $NEWDIR :
while read line
do
find "$PARENTDIR" -name "$line*" -exec cp -v {} "$NEWDIR" \;
done < "$LIST"
Isso deve funcionar com as versões compatíveis com POSIX de find - não apenas o GNU encontrar .
Evite a gravação excessiva de arquivos com nomes semelhantes
Se você tiver nomes de arquivos duplicados, eles serão substituídos em $NEWDIR . Se vocês
Se você quiser evitar a gravação excessiva dos arquivos, precisará recriar o diretório
árvore dentro de $NEWDIR . Isso pode ser feito usando o comando install de GNU coreutils que cria todas partes do caminho similar a mkdir -p .
cd "$NEWDIR"
while read line
do
find . -name "$line*" -exec install -D {} $NEWDIR/{} \;
done < "$LIST"
cd -
2. Descompacte os arquivos copiados:
find "$NEWDIR" -exec gunzip {} \;