ディレクトリのリストは機能するはずです。たとえば、スクリプトで使用したもの(gnu diffを想定)、
diff -r \
--exclude="*~" \
--exclude=".svn" \
--exclude=".git" \
--exclude="*.zip*" \
--exclude="*.gz" \
--exclude="*.tar" \
...etc
... .svnおよび.gitdirsの内容を無視しますが、*.zip/ *.gz/ etc という名前の個々のファイルも無視します。
編集:フォームのフィルタパスするためにはdir_a/file1依然としてdiff同じ基本名を持つファイル、などdir_b/file1またはdir_a/b/file1、その後するファイルのリストdiff(使用、例えば、生成されなければならないfind)、及びこれらのパスに由来比較するファイル。例えば、与えられた
$ 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
比較するファイルのリストを生成し*/a/2.txtます2.txt。たとえば、除外しますが、という名前の他のファイルを比較します。を除くすべてのファイルを「検索」するだけですONE/a/2.txt(正規表現はのようにここでも使用できます.*/a/2.txt)。
$ find ONE -type f \( ! -regex 'ONE/a/2.txt' \) \
-exec bash -c 'diff -q "${1}" "${2/ONE/TWO}"' - {} {} \;
これは実際には無視ONE/a/2.txt(およびTWO/a/2.txt)しますが、次の名前のファイルを比較します2.txt:
diff -q ONE/a/1.txt TWO/a/1.txt
diff -q ONE/a/b/2.txt TWO/a/b/2.txt
編集:それとも、ともっと楽しいfind(追加の楽しみは、読者の練習として残し)、ファイルまたはディレクトリを選択除外して、diff他のすべて:
$ find ONE \( -regex 'ONE/a/2.txt' -o -name b -prune \) \
-o -type f -exec bash -c 'echo diff -q "${1}" "${2/ONE/TWO}"' - {} {} \
上記の例では、特定のファイル「{top} /a/2.txt」、「b」という名前のディレクトリ、および他のすべてが差分になっています。(単純な「-name b」の代わりに、「」を使用することもできます-regex '.*/b'-注、末尾の「/」はありません。)
diffの--excludeオプションであるくだらないので...