Estou tentando usar diff
para comparar duas árvores de diretório enquanto ignoro certos subdiretórios, mas não consigo fazê-lo funcionar. Esta é a aparência da minha estrutura de arquivos:
temp/
|-- d1/
|-- f1.txt
|-- ignoreme/
|-- f2.txt
|-- d2/
|-- f1.txt
|-- ignoreme/
|-- f2.txt
Estou tentando fazer com que ele ignore qualquer coisa sob d1/ignoreme
e d2/ignoreme
, mas não vai fazer isso.
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/ d1 d2
Files d1/ignoreme/f2.txt and d2/ignoreme/f2.txt differ
eu também tentei
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/* d1 d2
e
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/* --exclude=/home/ubuntu/temp/d2/ignoreme/* d1 d2
mas sempre obtenho o mesmo resultado. Como faço para que isso funcione?
As opções
-x
ou--exclude
para GNUdiff
usam um padrão de globbing de nome de arquivo com o qual o nome de cada arquivo e diretório será correspondido. Se o padrão corresponder a um nome específico, esse nome será excluído da comparação.O padrão é aplicado ao nome base de arquivos e diretórios, não a nomes de caminho, o que significa que para excluir seu
ignoreme
diretório, você usariaIsso também excluiria qualquer outro nome que fosse
ignoreme
.Isso é semelhante à maneira
--exclude
como--exclude-dir
funciona no GNUgrep
quando executadogrep
recursivamente, embora ogrep
manual do GNU explique isso melhor.A
info
documentação do GNUdiff
explica isso: