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.

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

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/

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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.