Unix: Como mesclar dois diretórios

17

Digamos que eu tenha duas pastas com vários conteúdos, foo e bar . Como posso mesclar bar em foo para que:

  • Arquivos em foo que não estão em bar são intocados.
  • Os arquivos em bar que não estão em foo agora estão em foo .
  • Arquivos em foo que também estão em bar foram substituídos pelos arquivos de bar .
por Svish 07.02.2011 / 12:54

3 respostas

24

Se eu estou lendo seus requisitos corretamente, não há arquivos que vão de foo a bar . Parece que você pode simplesmente copiar o conteúdo de bar para foo , deixando-o sobrescrever os arquivos conforme necessário (seu comportamento padrão).

$ cp -R /path/to/bar/* /path/to/foo
    
por 07.02.2011 / 13:16
9

Eu tive uma necessidade muito semelhante: mesclar bar em foo , mas os arquivos que estão em bar não devem substituir os arquivos correspondentes em foo . Neste caso:

$ cp -R -n /path/to/bar/* /path/to/foo/
    
por 29.04.2013 / 19:41
1

Tente isto:

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

De man cp
-u, --update               copiar somente quando o arquivo SOURCE for mais recente que o arquivo de destino ou quando o arquivo de destino estiver faltando nos diretórios de cópia <-R, -r, -recursive recursivamente p>     

por 15.06.2017 / 19:02