com zsh
:
list=(file*_*.xml)
for prefix (${(u)list%%_*})
xmllint --noout --schema $prefix.xsd ${prefix}_*.xml
Eu não sou muito experiente com scripts bash. Mas estou tentando validar arquivos xml individuais com arquivos xsd correspondentes em um diretório. O nome inicial não muda, mas as datas mudam.
Por exemplo:
Eu gostaria de validar todos os arquivos File2 * .xml contra o arquivo2.xsd e todos os arquivos1 * .xml contra o arquivo1.xsd etc etc
algo como:
xmllint --noout --schema File2.xsd File2_*.xml
xmllint --noout --schema File1.xsd File1_*.xml
Mas não sei como ter strings regex para datas e dizer se File2 _ *. xml existe, valida cada arquivo contra o arquivo2.xsd.
Alguma ajuda, por favor?
com zsh
:
list=(file*_*.xml)
for prefix (${(u)list%%_*})
xmllint --noout --schema $prefix.xsd ${prefix}_*.xml
Algo parecido com isso pode ajudar (usando bash
):
# Iterate across the XSD files
for xsdfile in *.xsd
do
test -f "$xsdfile" || continue
# Strip the ".xsd" suffix and search for XML files matching this prefix
prefix="${xsdfile%.xsd}"
for xmlfile in "$xsdfile"_*.xml
do
test -f "$xmlfile" || continue
xmllint --noout --schema "$xsdfile" "$xmlfile"
done
done
Se você quiser verificar todos os arquivos XML correspondentes em uma única operação, isso funcionará:
# Iterate across the XSD files
for xsdfile in *.xsd
do
test -f "$xsdfile" || continue
# Strip the ".xsd" suffix and search for XML files matching this prefix
prefix="${xsdfile%.xsd}"
for xmlfile in "$xsdfile"_*.xml
do
# Skip if no files, else do it just once
test -f "$xmlfile" || continue
xmllint --noout --schema "$xsdfile" "$xsdfile"_*.xml
break
done
done