Výpis adresářů by měl fungovat; např. zde je to, co jsem použil ve skriptu (za předpokladu gnu diff),
diff -r \
   --exclude="*~" \
   --exclude=".svn" \
   --exclude=".git" \
   --exclude="*.zip*" \
   --exclude="*.gz" \
   --exclude="*.tar" \
   ...etc
 ...který ignoruje obsah .svn a .git dirs, ale také jednotlivé soubory s názvem *.zip /*.gz /atd.
 Upravit: Za účelem filtrování cest ve tvaru dir_a/file1 ale stále diff soubory se stejným základním názvem, například dir_b/file1 nebo dir_a/b/file1 , pak seznam souborů do diff by musel být vygenerován (například pomocí find ) a soubor k porovnání odvozený z těchto cest; např. daný
$ find ONE TWO -type f -print 
ONE/a/1.txt
ONE/a/2.txt
ONE/a/b/2.txt
TWO/a/1.txt
TWO/a/2.txt
TWO/a/b/2.txt
 vygenerujete seznam souborů k porovnání, s výjimkou například */a/2.txt ale stále porovnáváme další soubory s názvem 2.txt . Stačí "najít" všechny soubory kromě ONE/a/2.txt (lze zde také použít regulární výraz, například .*/a/2.txt )
$ find ONE -type f \( ! -regex 'ONE/a/2.txt' \) \
    -exec bash -c 'diff -q "${1}" "${2/ONE/TWO}"' - {} {} \;  
 což ve skutečnosti ignoruje ONE/a/2.txt (a TWO/a/2.txt ), ale stále porovnává ostatní soubory s názvem 2.txt :
diff -q ONE/a/1.txt TWO/a/1.txt
diff -q ONE/a/b/2.txt TWO/a/b/2.txt
 Upravit: Nebo více zábavy s find (další zábava jako cvičení pro čtenáře), vyberte soubory nebo adresáře, které chcete vyloučit a poté diff všechno ostatní:
$ find ONE \( -regex 'ONE/a/2.txt' -o -name b  -prune \)  \
    -o -type f -exec bash -c 'echo diff -q "${1}" "${2/ONE/TWO}"' - {} {} \
 Výše uvedený příklad vylučuje konkrétní soubor "{top}/a/2.txt", jakýkoli adresář s názvem "b" a vše ostatní je rozdílné. (Namísto jednoduchého „-name b " můžete také použít "-regex '.*/b' " - poznámka, žádné koncové "/".)
 Měl jsem stejný problém, takže jsem vytvořil opravu na diff . Oprava ještě nebyla přijata, ale můžete si vytvořit svou vlastní verzi diff s opravou nebo nainstalujte na Arch Linux s balíčkem AUR.
 Zde je diff patch.
 Chcete-li vyloučit adresář directory/sub-directory , používám
diff -r <src-dir> <dest-dir> | grep -v directory/sub-directory
Ačkoli by to mělo fungovat pro jediné vyloučení, nemělo by to být možné pro dlouhý seznam ignorovaných, jako máte vy.