comparando dois diretórios e obtendo a saída com caminho absoluto

1

estava tentando comparar dois diretórios. um diretório é o diretório de referência (dir1) e o outro é o diretório onde as modificações (dir2) estão sendo feitas

Eu preciso da lista de arquivos que são modificados ou adicionados no dir2 comparado com o dir1.

Eu usei rsync e diff e obtive o resultado. Mas precisa dos arquivos com Path absoluto na saída.

diff --brief --recursive /test/dir2 /reference/dir1

A saída é

Only in /test/dir2: king.txt

Only in /test/dir2/sdir2: abc.txt

Only in /test/dir2: test1

Only in /test/dir2/sdir3: test.txt

e usando o rsync

rsync -av --dry-run /test/dir2/ /reference/dir1

saída

sending incremental file list

./

king.txt

test.txt

sdir2/

sdir2/abc.txt

test1/

sent 52712 bytes received 1339 bytes 108102.00 bytes/sec

total size is 0 speedup is 0.00 (DRY RUN)

precisa da lista com o caminho completo /test/dir2/king.txt e ser armazenado em um arquivo.

Atenciosamente, KJ.

    
por KumarJohn 13.03.2013 / 19:57

2 respostas

1

Deve ser fácil o suficiente para ajustar a saída do diff para atender às suas necessidades ... apenas canalizar o diff através do sed.

sed -r -e 's/^.*Only in //' -e 's@: @/@'
    
por 13.03.2013 / 20:13
2

Você poderia apenas analisar a saída de diff :

diff --brief --recursive /test/dir2/ /reference/dir1/ | 
  gawk '(/Only/){print $3""$NF}' | sed 's/://'

Certifique-se de incluir o / à direita nos nomes dos diretórios, esta solução os espera. Use /test/dir2/ e não /test/dir2 . Além disso, isso não funcionará se os nomes dos arquivos contiverem espaços.

    
por 13.03.2013 / 20:14