Encontre e copie pastas recursivamente, mas mantenha a estrutura

1

Meu problema: eu tenho duas pastas, por exemplo, ~/foo e ~/bar . Ambos têm a mesma estrutura como ~/[foo/bar]/subdir1 e ~/[foo/bar]/subdir2 e dentro desses subdiretórios em foo estão pastas como .svn/

Eu quero copiar essas pastas .svn para o mesmo local, mas em bar . Por isso eu já tentei:

find -name .svn -exec cp -R {} ~/bar/ \;

Nota: O comando foi executado em ~/foo/

Infelizmente este comando não copia nenhum arquivo nem me dá uma mensagem de erro. Então, o que estou fazendo de errado e qual é a solução para o meu problema?

    
por Tim Gräber 19.03.2018 / 11:27

1 resposta

0

cd em foo e executar

find . -name .svn -type d -exec sh -c 'for arg do echo cp -R "$arg" ../bar/"$arg"; done' sh {} +

Ele chamará o comando echo para cada diretório .svn em foo e produzir saída como esta:

cp -R ./subdir1/.svn ../bar/./subdir1/.svn
cp -R ./subdir2/.svn ../bar/./subdir2/.svn

Verifique se isso está correto - você pode substituir ../bar por ~/bar se você quiser e execute o comando find novamente sem o echo :

find . -name .svn -type d -exec sh -c 'for arg do cp -R "$arg" ../bar/"$arg"; done' sh {} +

Isso realmente copia os diretórios.

    
por 20.03.2018 / 03:55