Esses dois loops usam diff -qr
fazer um diff inicial, principalmente
para obter os nomes dos arquivos facilmente, faça um diff individual no
encontrou um par de arquivos. sed
é usado para limpar as primeiras N linhas, ou
para manter apenas as primeiras N linhas. Primeiro para limpar as linhas N:
N=2
diff -qr dir1 dir2 |
grep '^Files.*differ' |
while read x a x b x
do diff --label "$a" --label "$b" -u <(sed "1,${N}s/.*//" <"$a") <(sed "1,${N}s/.*//" <"$b")
done
E isso para manter N:
diff -qr dir1 dir2 |
grep '^Files.*differ' |
while read x a x b x
do diff --label "$a" --label "$b" -u <(sed -n "1,${N}p" <"$a") <(sed -n "1,${N}p" <"$b")
done
Isso não assume espaços / guias em nomes de arquivos.
diff -r dir1 dir2
. Você também pode jogar com-I RE
opção para ignorar certas linhas correspondentes.