特定のサブディレクトリを無視して2つのディレクトリツリーを比較するためにdiff
を使用しようとしていますが、それを機能させることができません。これは私のファイル構造は次のようになります:
temp/
|-- d1/
|-- f1.txt
|-- ignoreme/
|-- f2.txt
|-- d2/
|-- f1.txt
|-- ignoreme/
|-- f2.txt
d1/ignoreme
およびd2/ignoreme
の下にあるものをすべて無視するようにしようとしていますが、それはできません。
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/ d1 d2
Files d1/ignoreme/f2.txt and d2/ignoreme/f2.txt differ
私も試しました
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/* d1 d2
そして
diff -qr --exclude=/home/ubuntu/temp/d1/ignoreme/* --exclude=/home/ubuntu/temp/d2/ignoreme/* d1 d2
しかし、いつも同じ結果が得られます。これを機能させるにはどうすればよいですか?
-x
または--exclude
GNU diff
のオプションは、各ファイルとディレクトリの名前が照合されるファイル名グロビングパターンを取得します。パターンが特定の名前と一致する場合、その名前は比較から除外されます。
パターンはパス名ではなく、ファイルとディレクトリのベース名に適用されます。つまり、ignoreme
ディレクトリを除外するには、次のようにします。
diff -qr --exclude=ignoreme ...
これにより、ignoreme
である他の名前も除外されます。
これは --exclude
および--exclude-dir
は、GNU grep
マニュアルでこれをより詳しく説明していますが、grep
を再帰的に実行すると、GNU grep
で機能します。
GNU info
のdiff
のドキュメントにそれが明記されています:
-x PATTERN
--exclude=PATTERN
ディレクトリを比較するときは、ベース名がPATTERN
と一致するファイルとサブディレクトリを無視します。