Unix: Como mesclar dois diretórios

17

Digamos que eu tenha duas pastas com vários conteúdos fooe bar. Como posso mesclar barem foode modo que:

  • Os arquivos fooque não barestão dentro são intocados.
  • Os arquivos barque não fooestão agora estão dentro foo.
  • Os arquivos fooque também estão no barforam substituídos pelos arquivos de bar.
Svish
fonte

Respostas:

25

Se estou lendo seus requisitos corretamente, não há arquivos que vão de foopara bar. Parece que você pode apenas copiar o conteúdo de barpara foo, permitindo que ele substitua os arquivos conforme necessário (seu comportamento padrão).

$ cp -R /path/to/bar/* /path/to/foo
coneslayer
fonte
Sim, o que eu não sabia era a recursividade e como não acabar tendo apenas bar dentro de foo como foo / bar. Mas este parece ser o que eu quero :)
Svish
1
Certo, se você o fizesse cp -R /path/to/bar /path/to/foo, criaria um diretório bardentro dele foo. Ponto sutil.
coneslayer
1
Nota: omitirá arquivos / diretórios ocultos em bar(ou seja, com nomes começando com um ponto - .) por causa de como o shell globbing funciona.
Kamil Maciorowski
9

Eu tinha uma necessidade muito semelhante: merge barem foomas os arquivos que estão em bar não deve arquivos correspondentes Substituir na foo. Nesse caso:

$ cp -R -n /path/to/bar/* /path/to/foo/
Joel Aufrecht
fonte
1

Tente o seguinte:

$ cp -r-u-v /path/to/foo/* /path/to/bar/

Na cópia man cp
-u, --update, somente quando o arquivo SOURCE é mais recente que o arquivo de destino ou quando o arquivo de destino está ausente
, os diretórios de cópia -R, -r, --recursive copy recursivamente

drew7721
fonte
1
Duas pessoas já sugeriram o comando cp e, portanto, sua resposta parece supérflua. Dedique alguns minutos para explicar como os argumentos que você selecionou fazem um trabalho melhor do que as outras sugestões ajudarão a tornar sua resposta mais útil.
music2myear
1
O sinalizador -u é atualizado apenas se o arquivo na fonte for mais novo que o do destino. Veja: man cp -> -u, --update: copiar apenas quando o arquivo SOURCE é mais recente que o arquivo de destino ou quando o arquivo de destino está faltando
drew7721
Adicione essas informações à pergunta (use Editar logo abaixo da postagem) para que as pessoas possam ver essas informações úteis na própria resposta.
music2myear