Vous pouvez exclure tous les fileendings indésirables avec find:
(cette version correspond uniquement contre les terminaisons de fichiers)
diff -r -x `find . -type f -name '*.*' | sed 's|.*\.|.*\.|' | sort -u | grep -v YOURFILETYPE | paste -sd "|"` ...rest of diff command
Ou vous générer la liste des fichiers exclus dès le départ et le transmettre à la diff:
(cette version correspond également des noms de fichiers et tous les autres regex que vous spécifiez dans include.file)
find /dirA -type f | grep -v YOURFILEENDING > exclude.list
find /dirB -type f | grep -v YOURFILEENDING >> exclude.list
diff -X exclude.list -r /dirA /dirB
Si vous enchaînez ces commandes via &&
vous obtiendrez une oneliner à portée de main;)
AVEC fichier Include
Si vous souhaitez utiliser un fichier inclus, vous pouvez utiliser cette méthode:
- Vous spécifiez le fichier à inclure
- grep correspond contre tous les fichiers dans les dossiers et transforme votre inclus udefile dans un fichier d'exclusion pour diff (diff ne prend exclure des fichiers)
Voici un exemple:
version en ligne Compliqué:
(cette version correspond uniquement contre les terminaisons de fichiers)
diff -r -x `find . -type f -name '*.*' | sed 's|.*\.|.*\.|' sort -u | grep -v -f include.file | paste -sd "|"` /dirA /dirB
Version légèrement plus longue:
(cette version correspond également au nom de fichier s et tous les autres regex que vous spécifiez dans include.file)
find /dirA -type f | grep -v -f include.file > exclude.list
find /dirB -type f | grep -v -f include.file >> exclude.list
diff -X exclude.list -r /dirA /dirB
avec chaque ligne comprise.fichier étant un grep regex/expression:
log
txt
fileending3
whateverfileendingyoulilke
fullfilename.txt
someotherregex.*
NOTE
Je ne courais pas ce parce que je suis loin d'être un ordinateur. J'espère avoir toute la syntaxe correcte.
J'aime cette idée, mais comment pourrais-je utiliser une méthode inversée et seulement diff par rapport à une "include.list"? – vmoralito
@vmoralito Je viens de mettre à jour mon article et j'ai trouvé une méthode pour générer dynamiquement un fichier d'exclusion à partir d'un fichier d'inclusion, car diff ne prend que le fichier d'exclusion. Mais en utilisant le chemin ci-dessus, vous pouvez utiliser votre fichier include. –