Suponho que depois de extrair o seu arquivo em uma pasta chamada zip , você tem a seguinte estrutura de diretórios:
$ tree -F
.
├── myProject/
│ └── res/
│ ├── drawable-hdpi/
│ ├── drawable-ndpi/
│ ├── drawable-xhdpi/
│ └── drawable-xxhdpi/
└── zip/
├── drawable-hdpi/
│ ├── ic_add.png
│ └── ic_del.png
├── drawable-ndpi/
│ ├── ic_add.png
│ └── ic_del.png
├── drawable-xhdpi/
│ ├── ic_add.png
│ └── ic_del.png
└── drawable-xxhdpi/
├── ic_add.png
└── ic_del.png
Em seguida, você pode simplesmente mover todos os arquivos *.png de todos os diretórios drawable-*/ dentro de zip/ para seus respectivos diretórios drawable-*/ dentro de myProject/res/ usando o seguinte comando:
for folder in zip/drawable-*/ ; do mv "$folder"/*.png "myProject/res/$(basename $folder)" ; done
Ele percorrerá todas as pastas zip/drawable-*/ , computará o diretório de destino apropriado anexando o último componente de caminho da pasta de origem ao caminho myProject/res/ e moverá todos os arquivos *.png da pasta de origem para a pasta de destino .
Você pode alterar os globos e os caminhos da shell para se adequar ao seu ambiente real.
Você pode substituir mv por cp para copiar os arquivos em vez de movê-los.
Você pode escrever mv -i para ser perguntado antes de qualquer arquivo existente ser sobrescrito ou mv -n pular arquivos que já existem e não sobrescrever nada. Os mesmos switches existem para cp .
No entanto, observe que nem mv nem cp criam diretórios ausentes, portanto, verifique se os caminhos de destino de cada arquivo já existem.