J'essaie d'utiliser diff
pour comparer deux arborescences de répertoires tout en ignorant certains sous-répertoires, mais je ne parviens pas à le faire fonctionner. Voici à quoi ressemble ma structure de fichiers:
temp/
|-- d1/
|-- f1.txt
|-- ignoreme/
|-- f2.txt
|-- d2/
|-- f1.txt
|-- ignoreme/
|-- f2.txt
J'essaie de le faire ignorer quoi que ce soit sous d1/ignoreme
et d2/ignoreme
, mais il ne le fera pas.
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/ d1 d2
Files d1/ignoreme/f2.txt and d2/ignoreme/f2.txt differ
J'ai aussi essayé
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/* d1 d2
et
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/* --exclude=/home/ubuntu/temp/d2/ignoreme/* d1 d2
mais j'obtiens toujours le même résultat. Comment puis-je faire fonctionner cela?
Le -x
ou --exclude
options pour GNU diff
prendre un modèle de globbing de nom de fichier auquel le nom de chaque fichier et répertoire sera comparé. Si le modèle correspond à un nom particulier, ce nom est exclu de comparaison.
Le modèle est appliqué au nom de base des fichiers et répertoires, pas aux noms de chemin, ce qui signifie que pour exclure votre répertoire ignoreme
, vous utiliseriez
diff -qr --exclude=ignoreme ...
Cela exclurait également tout autre nom qui se trouve être ignoreme
.
Ceci est similaire à la façon dont --exclude
et --exclude-dir
fonctionne dans GNU grep
lors de l'exécution de grep
récursivement, bien que le GNU grep
le manuel l'explique mieux.
La documentation de info
pour GNU diff
l'explique:
-x PATTERN
--exclude=PATTERN
Lorsque vous comparez des répertoires, ignorez les fichiers et sous-répertoires dont les noms de base correspondent àPATTERN
.