перезагрузка в середине скрипта [закрыто]

решение bash (при условии, что включена опция оболочки extglob - см. руководство по сопоставлению с образцом )

for i in 0.* ; do mv "$i" "${i##0.*(0)}" ; done
  • $ {i ## удалить самое длинное совпадение с начала i переменной
  • 0. соответствует последовательности символов 0.
  • * (0) означает ноль или более вхождений 0

или это решение, предложенное @Costas, для которого не нужна опция extglob

for i in 0.* ; do mv "$i" "${i#${i%%[!0.]*}}" ; done
  • $ {i %% удалить самое длинное совпадение с конца i переменной
  • * любой символ, ноль или более раз
  • [! 0.] символы, кроме 0.
  • Итак, $ {i %% [! 0.] *} эффективно удаляет с первого не 0 или . до конца. Например: 35 удаляется для 0,035 , 1 для 0,001 , str0.00456a для 0str0.00456a и целая строка для str0.00456a
  • остальные символы (например: 0,0 для 0,035 и 0,00 для 0.001 передается в $ {i # , который затем удаляет эти символы из начала переменной, в результате чего 35 для 0,035 и 1 для 0,001

Дополнительная литература: Расширение параметров

1
22.10.2014, 18:33
0 ответов

Теги

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