1. ホーム
  2. bash

すべてのバイナリファイルを無視して再帰的にディレクトリをdiffする

2023-07-29 04:28:22

質問

Fedora Constantine ボックスで作業しています。私は diff 2 つのディレクトリを再帰的にチェックし、ソースの変更を確認することです。プロジェクトのセットアップのために(私自身がそのプロジェクトに関与する前に! ため息 ) の設定により、ディレクトリにはソースとバイナリの両方、および大きなバイナリ データセットが含まれています。差分は最終的にこれらのディレクトリで機能しますが、バイナリ ファイルを無視できれば、おそらく 20 秒はかかるでしょう。

私が理解する限り、diff には「バイナリ ファイルを無視する」モードはありませんが、正規表現を無視する無視引数があります。 内の を無視する引数があります。拡張子に関係なくバイナリファイルを無視するには、そこに何を書けばいいのかわかりません。

以下のコマンドを使用していますが、バイナリファイルを無視することはできません。どなたか、このコマンドをどのように修正すればよいかご存知でしょうか。

diff -rq dir1 dir2

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

たぶん grep -I (と同じ意味です。 grep --binary-files=without-match ) をバイナリファイルを選別するためのフィルタとして使用します。

dir1='folder-1'
dir2='folder-2'
IFS=$'\n'
for file in $(grep -Ilsr -m 1 '.' "$dir1"); do
   diff -q "$file" "${file/${dir1}/${dir2}}"
done