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 {} \;