테스트 스위트를 반복적으로 실행하여 생성된 수많은 출력 파일이 있는데 이들이 얼마나 다른지 대략적으로 알고 싶습니다. 이상적으로는 모두 동일하거나(테스트가 완전히 반복 가능함을 나타냄) 거의 동일해야 합니다(예: 타임스탬프가 있는 경우). 그래서 저는 다음과 같은 스크립트를 찾고 있습니다.
show-greatest-diff /path/to/files/*.out
따라서 100개의 *.out 파일이 있는 경우 스크립트는 diff
파일을 모두 서로 비교하고 해당 파일에 대해 최대 수의 다른 줄/문자를 생성하거나(가장 다른 쌍을 식별할 수 있음) 다음을 인쇄해야 합니다 diff
. 다른 경험적 유용한 결과를 생성하거나 생성하기 위해 가장 큰 차이점이 있는 것입니다.
제안된 솔루션여기파일 수가 많아 내 사용 사례에 적합하지 않습니다.
답변1
어때요?
mostdifs=-1;
for f1 in path/to/files/*.out; do
for f2 in path/to/files/*.out; do
difs=$(diff "$f1" "$f2" | wc -l);
[ "$difs" -gt "$mostdifs" ] && mostdifs=$difs && mostdif="$f1 : $f2";
done
done
echo "$mostdif"
$f1
이것은 매우 간단하며 다른 파일 및 기타 다양한 조정을 통해 동일한지 테스트하여 개선할 수 있습니다 $f2
. 그러나 수백 개의 텍스트 파일에 대해 이야기하는 경우 몇 초 만에 실행되므로 복잡성이 더욱 커집니다. 그럴 가치가 없어 가능합니다.
아이디어는 각 파일 쌍에서 이를 실행 diff
하고 반환되는 줄 수를 확인하는 것입니다. 숫자가 현재 최대 숫자보다 크면 파일 이름이 저장됩니다.