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 .