Я пытаюсь использовать решение hek2mgl для предыдущего вопроса и получаю сообщение об ошибке. Надеюсь, вы мне поможете.
Что я пытаюсь сделать: переименовать файлы XML, чтобы они отражали содержимое элемента идентификатора.
Это точный код, который я использую:
find . -maxdepth 1 -name 'part*.xml' -exec ./rename_xml.sh {} \;
Хотя мой сценарий rename_xml выглядит следующим образом:
#!/bin/bash
id=$(xmllint --xpath '//identifier' "$1" | sed -r 's/[^"]+"([^"]+).*/\1/')
mv -v "$1" "$id.xml"
Пример исходного XML-файла выглядит следующим образом:
<root>
<title>title</title>
<identifier>001</identifier>
</root>
Я получаю следующее сообщение об ошибке при запуске команды find.
sed: illegal option -- r
usage: sed script [-Ealn] [-i extension] [file ...]
sed [-Ealn] [-i extension] [-e script] ... [-f script_file] ... [file ...]
XPath set is empty
./.xml -> .xml
Полагаю, что здесь происходят две вещи: нерабочая версия sed (недопустимая опция -r) и проблема с моим XPath. Как я могу изменить этот скрипт, чтобы он работал как положено?