+
— это расширенный модификатор регулярного выражения. sed
по умолчанию выполняет базовые регулярные выражения .
Чтобы заставить sed
анализировать ваши выражения как расширенные регулярные выражения, используйте sed -E
. GNU sed
также понимает +
в основных регулярных выражениях, если вы используете его как \+
.
Кроме того, ваш шаблон *\-[0-9]**
выглядит странно. -
не требует экранирования (ни в шаблоне оболочки, ни в регулярном выражении ), и если вы не используете globstar
в bash
, шаблон **
расширится до самого себя. С включенным globstar
вbash
*-[0-9]**
будут расширены до всех путей, которые содержат -N
в первом компоненте имени файла (, где N
— цифра ).
Я думаю, что вы хотели бы сделать что-то вроде этого (возможно, не совсем, но я не знаю, как выглядят ваши имена файлов):
for name in *-[0-9][0-9]*; do
newname=${name%-*}
printf 'Would rename "%s" into "%s"\n' "$name" "$newname"
# mv "$name" "$newname"
done
Это соответствует всем именам в текущем каталоге, которые содержат-NN
(N
— цифру ). Он удаляет все, начиная с последнего -
в имени файла, и переименовывает файл (, фактическое переименование закомментировано ).
Как заметил пользователь user1794469 , проблема была вызвана тем, что -диспетчер сети работал и обновлял информацию.
In general I don't think killing NM is a good long term solution but if your goal is to learn networking and you want to be able to configure some networks and run some exercises on them then it seems like a viable direction.
Если вы хотите научиться работать в сети, это решение.