다음과 같은 이름의 파일이 많이 있습니다.
something08-a-v1.html
something08-b-v2.html
something09-a-v1.html
something09-b-v2.html
somethingelse10-a-v1.html
somethingelse10-b-v2.html
-a-
이 파일의 이전 버전입니다. -b-
최신 버전입니다. 그래서 매번 비교할 파일이 두 개 있습니다.
나는 그것들을 결합하고 싶다htmldiff.
htmldiff -a something08-a-something.html something08-b-something.html -o something08-diff.html
이를 어떻게 자동화할 수 있나요?
를 사용하는 것이 더 확실한 방법이라고 생각하는데 find
.-[/b]a-v[1/2]
답변1
파일 이름 패턴이 이미 있으므로 하나는 이고 -a-
다른 하나는 이라는 것을 알 수 -b-
있으며 표시된 파일 쌍만 있다고 가정하면 다음을 사용할 수 있습니다.
$ for file in *-a-*; do
prefix=${file%%-*}
htmldiff -a "$prefix"-a-* -b "$prefix"-b-* -o "$prefix"-diff.html
done
이 구문은 ${var%%pattern}
변수 값 끝에서 가장 긴 일치 항목을 제거합니다. pattern
여기서는 접두사만 남기고 -*
처음부터 끝까지 모든 것을 제거하는 패턴입니다.-
에 따르면 참고하시기 바랍니다.GitHub 페이지, 옵션 htmldiff
이 없습니다 . 옵션은 다음과 같습니다.-b
-a
-a --accurate-mode 위험 모드 대신 정확한 모드를 사용합니다.
그래서 나는 당신의 명령을 의심합니다실제로당신이 원하는 것은 :
$ for file in *-a-*; do
prefix=${file%%-*}
htmldiff -a "$prefix"-a-* "$prefix"-b-* -o "$prefix"-diff.html
done
또는:
$ for file in *-a-*; do
prefix=${file%%-*}
htmldiff "$prefix"-a-* "$prefix"-b-* -o "$prefix"-diff.html
done
답변2
파일 이름에 각 접두사가 있는 두 개의 파일만 있다고 가정하면 다음과 같이 작동합니다.
htmldiff prefix-*.html -o prefix-diff.html