1. ホーム
  2. linux

[解決済み] 特定の種類のファイルだけを集めたディレクトリの差分を取るには?

2022-11-22 05:15:32

質問

diff コマンドについて質問があります。 特定のファイルタイプに対してのみ、再帰的なディレクトリの差分を取りたい場合、どのようにすればよいのでしょうか?

excludeオプションを使用してみましたが、1つのパターンのみしか使用できません。

$ diff /destination/dir/1 /destination/dir/2 -r -x *.xml

というコマンドで、xmlファイルタイプしか除外できないのですが、imageタイプのフォルダーにファイルがあっても、( png , gif , jpg ), txt , php など

特定のファイル形式のみを差分する方法。

どのように解決するのですか?

以下のように -x を複数回指定することができます。

diff -x '*.foo' -x '*.bar' -x '*.baz' /destination/dir/1 /destination/dir/2

ディレクトリの比較のセクションから info diff (私のシステム上では info -f /usr/share/info/diff.info.gz ):

ディレクトリを比較する際に一部のファイルを無視するには、'-x PATTERN' または '--exclude=PATTERN' オプションを使用します。 このオプションは、ファイル またはサブディレクトリのベースネームがシェルのパターン PATTERN と一致するものを無視します。 シェルとは異なり、ファイル名のベースとなる部分の先頭にあるピリオド は、パターンの先頭のワイルドカードと一致します。 この場合 PATTERN を引用符で囲むと、シェルがそれを展開しないようになります。 例えば というオプションは -x '*.[ao]' とします。 は、名前が '.a' または '.o' で終わるファイルはすべて無視します。 '.o'.

このオプションは、複数回指定すると累積されます。 例えば 例えば、オプション -x 'RCS' -x '*,v' とします。 は、ファイルやサブディレクトリの基本名が 'RCS' であるか、または ',v' で終わっているものは無視されます。 サブディレクトリのベースネームが 'RCS' であるか ',v' で終わるものは無視されます。