mkdir split-files
find. -maxdepth 1 -type f -size +10000000c -exec split -b 10000000 {} split-files/{}. ';'
В текущем каталоге будут найдены файлы, размер которых превышает 10000000 байт (1000 КБ ). Он разделит эти файлы так, чтобы размер каждой части составлял 1000 КБ или меньше. Разделение происходит по границам байтов.
Разделенные файлы будут сохранены в новом каталоге split-files
и будут иметь то же имя, что и исходные файлы, с двухбуквенным суффиксом.
Исходные файлы остаются нетронутыми.
Вы нашли элемент, но вам нужно значение атрибута @DTS:ConnnectionString
, а не значение самого элемента. Без пространств имен вы бы выбрали это с суффиксом @ConnectionString
, но поскольку у вас здесь есть пространства имен, xmllint
требует, чтобы вы сопоставляли так же, как вы сопоставляли все имена ваших элементов, @*[local-name()='ConnectionString']
. Кроме того, чтобы удалить имя атрибута из начала результата, вам нужно обработать все это с помощью string()
. Уродливый.
xmllint --xpath "string(//*[local-name()='Executable']/*[local-name()='ConnectionManagers']/*[local-name()='ConnectionManager']/*[local-name()='ObjectData']/*[local-name()='ConnectionManager']/@*[local-name()='ConnectionString'])" file.xml
Выход
Data Source=ADMIN-8DF005D47;Initial Catalog=AdventureWorks;Provider=SQLNCLI11;Integrated Security=SSPI;Application Name=SSIS-HardestNestedWorkflow2-{A32A68DF-3D53-4057-AF80-1B8D524F82BC}ADMIN-8DF005D47.AdventureWorks;Auto Translate=False;
Лично я предпочитаю xmlstarlet
для такого рода операций, так как он более четко понимает пространства имен, но в конечном итоге лучше использовать наиболее удобный инструмент.
xmlstarlet sel xmlns:DTS="www.microsoft.com/SqlServer/Dts" -t -v '/DTS:Executable/DTS:Property' -n file.xml
8
xmlstarlet sel xmlns:DTS="www.microsoft.com/SqlServer/Dts" -t -v '/DTS:Executable//DTS:ConnectionManager/@DTS:ConnectionString' -n file.xml
Data Source=ADMIN-8DF005D47;Initial Catalog=AdventureWorks;Provider=SQLNCLI11;Integrated Security=SSPI;Application Name=SSIS-HardestNestedWorkflow2-{A32A68DF-3D53-4057-AF80-1B8D524F82BC}ADMIN-8DF005D47.AdventureWorks;Auto Translate=False;