Diff comando para comparar arquivos que estão no primeiro diretório apenas

1

Eu tenho 2 pastas cujo conteúdo eu quero comparar. Por exemplo eu tenho pasta 1 e pasta 2. Pasta 2 tem um monte de novos arquivos + alguns arquivos mesmo que a pasta 1, mas com algumas alterações no conteúdo desses arquivos. Agora, quero comparar a pasta 1 e a pasta 2 para obter a lista de arquivos da pasta 1 que estão alterados ou ausentes na pasta 2.

Quando executo o seguinte comando:

diff --brief -r folder1/ folder2/ > diff.txt

Também me fornece a lista de novos arquivos da pasta 2.

Eu quero comparar a pasta 1 e a pasta 2 para obter a lista de apenas os arquivos da pasta 1 que estão faltando ou foram alterados na pasta 2.

Como posso conseguir isso?

Por favor, não recomende Meld , eu já tentei e não ajuda em nada. Eu imaginei, a linha de comando seria mais rápida.

UPDATE

find folder1 -type f -exec diff --brief --from-file=folder2 {} +

não me fornece o caminho completo dos arquivos diferentes / ausentes.

    
por Reena Parekh 27.12.2016 / 12:36

2 respostas

0

Seguido trabalhado:

diff --brief -r folder1/ folder2/ | grep folder1/ > diff.txt
    
por Reena Parekh 27.12.2016 / 12:49
2

A opção --from-file pode ser útil:

$ diff -r --brief foo bar
Files foo/a and bar/a differ
Files foo/b and bar/b differ
Files foo/c and bar/c differ
Only in bar: d
$ diff --brief --from-file=bar foo/*
Files bar/a and foo/a differ
Files bar/b and foo/b differ
Files bar/c and foo/c differ

Então, no seu caso, seria:

diff --brief --from-file=folder2 folder1/*

Há também a opção --unidirectional-new-file :

--unidirectional-new-file
      treat absent first files as empty

Com isso:

$ diff /tmp/foo/ /tmp/bar -r --brief --unidirectional-new-file
Files /tmp/foo/a and /tmp/bar/a differ
Files /tmp/foo/b and /tmp/bar/b differ
Files /tmp/foo/c and /tmp/bar/c differ
    
por muru 27.12.2016 / 12:53