Você pode usar rsync .
rsync -avzh -n --include='*/' --include='*nice_little_icon.png' --exclude='*' Project1/../res/ Project2/../res/
Isso copiará somente os arquivos chamados nice_little_icon.png de Project1/../res/* para Project2/../res/ e criará os diretórios-pai do arquivo ( drawable-ldpi , drawable-ldpi , etc.) sob Project2/../res/ se eles não o fizerem existe.
Explicando o comando rsync :
-
-avzh : -a significa basicamente 'recursivo e preserva o timestamp, permissões e algumas outras coisas', -v significa detalhado, -z significa compactar arquivos durante a transferência (não é realmente necessário, mas eu gosto de usá-lo de qualquer maneira), e -h significa impressão em legível.
-
-n : significa corrida a seco. Então, executar este comando não fará nada. Você precisará remover isso para realmente fazer o comando agir.
-
--include='*/' --include='*nice_little_icon.png' --exclude='*' : esta é basicamente a maneira de dizer ao rsync para copiar apenas os arquivos que terminam em nice_little_icon.png e excluir todo o resto.
-
Project1/../res/ : o diretório de origem. O último / é muito importante, significa 'copie o que estiver em res/ '. Se você removeu esse / , copiará o diretório real res para o destino, o que não é o que você deseja.
-
Project2/../res/ : o diretório de destino.
Quando você executar o comando acima, ele mostrará o que ele fará (isto é, quais diretórios e arquivos serão copiados):
./
drawable-hdpi/
drawable-hdpi/nice_little_icon.png
drawable-mdpi/
drawable-mdpi/nice_little_icon.png
...
Deve ser algo parecido (isto é, os diretórios pai e apenas o arquivo nice_little_icon.png ). Se estiver correto, remova o -n do comando para realmente executar uma ação e copiar os arquivos .