Diferença de pastas e arquivos

3

Eu tenho duas pastas com pastas diferentes. Essas pastas também contém arquivos diferentes. Eu estou procurando o comando que me daria a diferença entre essas duas pastas pai. Não apenas a diferença de arquivos contidos em uma pasta e não na outra, mas também a diferença no conteúdo dos arquivos.

Eu já fiz isso até agora: diff -rq fold1 fold2 .. Mas isso não me dá a diferença entre os arquivos.

Qual comando posso executar?

    
por Hommer Smith 08.11.2012 / 10:02

2 respostas

1

Talvez você possa usar rsync como um truque para fazer isso.

rsync --dry-run --delete --recursive --verbose dir1/ dir2

ou, versão curta

rsync -nrv --delete dir1/ dir2

NÃO ESQUEÇA O --dry-run OR -n OPTION, ou o diretório de destino (dir2) será idêntico ao diretório de origem (dir1).

Isso eliminará as diferenças de dois diretórios, incluindo nomes de diretórios e nomes de arquivos e de arquivos. (e você pode até comparar dois diretórios em duas máquinas diferentes)

sending incremental file list
deleting dir3-1/   # this directory (name) doesn't exist in source directory
deleting file2.txt # this file      (name) doesn't exist in source directory
file1.txt          # this file is different (content) from the source files
dir3/              # this directory (name) doesn't exist in destination directory

sent 95 bytes  received 21 bytes  232.00 bytes/sec
total size is 4  speedup is 0.03 (DRY RUN)
    
por 07.01.2013 / 12:23
0

Para a diferença nas pastas, você pode tentar

ls -R fold1 > list1
ls -R fold2 > list2
diff list1 list2.

Para diff arquivos, no entanto, acho que você precisará escrever um script (talvez analisar a saída ls -R).

Uma solução um tanto hackeada:

find fold1 -type f|while read x; do [ -e fold2/$x ] && diff fold1/$x fold2/$x >> files_diff.out; done

Isso pode não ser a maneira mais elegante ou eficiente de fazer isso. Tenho certeza de que alguém mais familiarizado com o Bash pode encontrar uma maneira melhor. Se você é alfabetizado em Perl, sugiro usar o módulo File :: Find.

    
por 08.11.2012 / 10:10

Tags