'*[0-9]G*'
на самом деле является глобальным выражением, а не регулярным выражением.
Команда исключает имена входных файлов, соответствующие '*[0-9]G*'
, а затем выполняет поиск du
выходных строк, соответствующих '[0-9]G\>'
такие, которые были бы получены из-за -h
(--удобочитаемый
) du
опция - например
3.3G /usr/lib
Используйте rename
.
rename -nv 's/\.G1\./\.SH\./' *.G1.*
-n
используется для пробного запуска, как только вы увидите, что переименовывается, и если это правильно, удалите опцию n
, чтобы иметь фактическое переименование.
Использование bash
или любой другой оболочки, которая понимает подстановку шаблона${parameter/pattern/string}
:
for name in./*.G1.*; do
echo mv "$name" "${name/.G1./.SH.}"
done
Удалите echo
после однократного запуска с ним (, чтобы убедиться, что он работает правильно ).