Я не очень разбираюсь в написании сценариев на bash. Но я пытаюсь проверить отдельные файлы xml с соответствующими файлами xsd в каталоге. Начальное название не меняется, но меняются даты.
Например:
Я хотел бы проверить все файлы File2 * .xml и File2 * .xml на соответствие File2. все File1 * .xml против File1.xsd и т.д. и т.д.
что-то вроде:
xmllint --noout --schema File2.xsd File2_*.xml
xmllint --noout --schema File1.xsd File1_*.xml
Но я не уверен, как иметь строку регулярного выражения, возможно, для дат и сказать, существует ли File2 _ *. xml, проверяет каждый файл на File2.xsd.
Любая помощь, пожалуйста?
Что-то вроде этого может помочь (используя 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
Если вы хотите проверить все совпадающие файлы XML за одну операцию, это будет работать:
# 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
С zsh
:
list=(file*_*.xml)
for prefix (${(u)list%%_*})
xmllint --noout --schema $prefix.xsd ${prefix}_*.xml