このdiffを使用して2つのファイルが異なるかどうかを示しますが、気にしない他の行を無視するには正規表現が必要です。ただし、設定方法によって違いを報告すると、ファイル名が変更されます。
diff -q --suppress-common-lines -B <(grep -vE '\s(name|timestamp|root)=' goldcopy.xml) <(grep -vE '(\sname|timestamp|root)=' QJ03425234.xml)
「ファイル /dev/fd/63 と /dev/fd/62 が異なります」などの内容が報告されますが、ファイル名が必要なので、誰かがどのファイルで実行しているのかわからない場合でも、どのファイルがわかるのかがわかります。違う。
答え1
onelinerでは、diffは実際にはファイルではなく、シェルgrep
によって動的に生成される2つのファイル記述子のそれぞれに共通の/dev/fd/63
/dev/fd/62
名前です。<( command )
慣用語が呼ばれます。プロセスの交換diff
したがって、明示的に指定しない限り、元のファイル名を直接知る方法はありません。--label
または-L
オプションの使用を検討してください。
F1=goldcopy.xml; F2=QJ03425234.xml; diff -L $F1 -q --suppress-common-lines -B <(grep -vE '\s(name|timestamp|root)=' $F1) -L $F2 <(grep -vE '(\sname|timestamp|root)=' $F2)