find
の組み合わせとfile
コマンドを使用します。これには、ディレクトリ内のfile
コマンドの出力に関するいくつかの調査を行う必要があります。私はdiffしたいファイルがasciiとして報告されていると仮定しています。または、grep -v
を使用してバイナリファイルをフィルタします。あなたはおそらく、巨大なバイナリの名前を知っているハッシュ配列にそれらを配置し、ファイルをハッシュしていないときにのみ、差分を行うので
#!/bin/bash
dir1=/path/to/first/folder
dir2=/path/to/second/folder
cd $dir1
files=$(find . -type f -print | xargs file | grep ASCII | cut -d: -f1)
for i in $files;
do
echo diffing $i ---- $dir2/$i
diff -q $i $dir2/$i
done
、このような何か:
#!/bin/bash
dir1=/path/to/first/directory
dir2=/path/to/second/directory
content_dir1=$(mktemp)
content_dir2=$(mktemp)
$(cd $dir1 && find . -type f -print > $content_dir1)
$(cd $dir2 && find . -type f -print > $content_dir2)
echo Files that only exist in one of the paths
echo -----------------------------------------
diff $content_dir1 $content_dir2
#Files 2 Ignore
declare -A F2I
F2I=([sqlite3]=1 [binfile2]=1)
while read f;
do
b=$(basename $f)
if ! [[ ${F2I[$b]} ]]; then
diff $dir1/$f $dir2/$f
fi
done < $content_dir1
の
内容ではなく、 'diff'の' cmp'を使用してみてください、バイナリファイルを無視することはありませんが、より高速でなければなりません –
チップをありがとう。 –
eek。これはソース管理のポスターの子の正当性です。あなたがそれを使用していない場合は、あなたはすべきです。決定があなたの手にない場合、あなたは情熱的に主張するべきです。あなたの問題は適切なgitの設定で消えてしまうでしょう... – fearlesstost