.xhtml 파일의 일괄 처리를 위한 xmlstarlet 명령

.xhtml 파일의 일괄 처리를 위한 xmlstarlet 명령

단일 .xhtml 파일을 처리하기 위해 xmlstarlet을 사용해 보았습니다.

xmlstarlet fo --omit-decl --recover --html file.xhtml 

이 명령은 단일 파일을 처리하고 터미널에서만 출력을 인쇄합니다. 여러 파일을 일괄 처리하고 결과를 stdout파일로 저장하는 방법은 무엇입니까? (파일에 접두사 또는 접미사를 추가하여 동일한 이름)

답변1

아래 코드는 끝에서 약간 수정된 변형입니다.내 대답동일한 주제에 대한 이전 질문과 마찬가지로 실제 일괄 처리에도 동일한 접근 방식이 사용되었습니다.

처리하려는 파일이 모두 패턴과 일치하는 경우 ./*.xhtml, 즉 .xhtml파일 이름 접미사가 있고 현재 디렉터리에 있는 경우 위 명령 중 하나를 사용하여 간단한 쉘 루프를 사용하여 모든 파일을 처리할 수 있습니다. .

for name in ./*.xhtml; do
        xmlstarlet fo --omit-decl --recover --html "$name" >"$name".new
done

루프의 명령은 생성된 문서를 이전 파일과 이름은 동일하지만 .new파일 이름 접미사가 추가된 파일로 출력합니다.

디렉터리 계층 구조(예: 여러 하위 디렉터리가 있는 디렉터리)의 모든 XHTML 파일에 대해 위 명령을 실행하려면 를 사용할 수 있습니다 find.

find . -type f -name '*.xhtml' -exec sh -c '
        for name do
                xmlstarlet fo --omit-decl --recover --html "$name" >"$name".new
        done' sh {} +

관련 정보