Diff e links simbólicos recursivos

4

Estou tentando diferenciar dois diretórios usando (bem) diff . No entanto, diff segue os links simbólicos e compara as diferenças entre os arquivos de destino. Eu não consigo encontrar uma maneira de não ter diff fazer isso. Em vez disso, o que eu gostaria de saber é se os objetivos são os mesmos (ou diferentes para esse assunto). Em outras palavras, se os links simbólicos apontam para o mesmo arquivo, (na minha opinião) eles são os mesmos, senão eles são diferentes e isso é tudo que eu quero que diff me diga quando se deparar com links simbólicos durante uma chamada recursiva. / p>

Eu tentei procurar on-line, mas ou encontrei tópicos relacionados a lidar com links simbólicos sozinhos ou ignorá-los completamente.

    
por Ash 23.08.2013 / 09:57

2 respostas

2

O GNU diff v3.3 introduz a opção --no-dereference que faz o truque. Esta opção é descrita por diff --help , mas não mencionada na página man.

(veja também link e link )

    
por 12.12.2016 / 10:15
1

Se você adicionar linhas como:

dir1/synlinkyfile.txt
config.mk

para um arquivo .ignore-diff

então você pode executar diff(1) assim:

diff -ur -X .ignore-diff

O que eu sugiro é criar um arquivo dos ignores

find . -type l -exec stat '{}' '+' | grep 'File:' | sort | sed "s/^  File: \'//" | sed s/\'.*// >.ignore-diff

localiza todos os links simbólicos em subdiretórios, obtém a (s) linha (s) relevante (s), classifica-os (gosto de coisas alfabéticas) e resume-os a um caminho de arquivo simples e simples para os arquivos que são realmente links simbólicos. termina de redirecionar para .ignore-diff

é claro, há também a possibilidade de fazer o .ignore e, em seguida, fazer a mesma pesquisa novamente, mas tirar o último sed e adicionar mais alguns seds para eliminar todos os destinos, exceto os destinos.

find . -type l -exec stat '{}' '+' | grep 'File:' | sort | sed "s/^  File: \'//" | sed "s/.*-> \'//" | sed "s/'//g" | sed s/\'// > symlinks-dest

faça isso para cada diretório e, em seguida, você poderá diferenciar esses dois arquivos -detlinks para comparar os destinos dos links simbólicos.

    
por 06.09.2013 / 01:13

Tags