Как удалить определенный раздел в имени файла

Группа group 2, а неgroup 3:

xmlstarlet sel -t \
    -v '//Key[Key/Value[@name="rsv-login-name" and @data="name3"]]/Value[@name="rsv-group-name"]/@data' -nl file.xml

Или со значением запроса, взятым из командной строки:

xmlstarlet sel -t --var data="'name3'" \
    -v '//Key[Key/Value[@name="rsv-login-name" and @data=$data]]/Value[@name="rsv-group-name"]/@data' -nl file.xml

Как вариант,

xmlstarlet sel -t --var data="'name3'" \
    -m '//Key/Key/Value[@name="rsv-login-name" and @data=$data]' \
    -v '../../Value[@name="rsv-group-name"]/@data' -nl file.xml

Результатом любого из них будет group 2.

Запрос XPath ищет узел Key/Key/Value, который имеет name="rsv-login-name"и data="name3", и для узла Key, для которого этот узел является узлом Key/Value, возвращает атрибут dataдля Valueузел с name="rsv-group-name".

XML, который я использовал здесь, представляет собой слегка измененный документ, в который добавлен тег <root>в начале и конечный тег </root>в конце, чтобы сделать его хорошо -сформированным XML-документом.

0
06.04.2020, 17:21
1 ответ
#!/bin/bash
for i in *; do
    echo "Old file: $i"
    new=$(echo "$i" | sed -e 's/\s*(.*)//g')
    echo "New file: $new"
done

Старый файл :abc (csd ).mp4 Новый файл :abc.mp4 Старый файл :деф (123 ).mp4 Новый файл :def.mp4

Просто замените echo на mv "$i" "$new".

0
28.04.2021, 23:18

Теги

Похожие вопросы