Измените одну часть имени для более чем 1000 файлов

'*[0-9]G*' на самом деле является глобальным выражением, а не регулярным выражением.

Команда исключает имена входных файлов, соответствующие '*[0-9]G*', а затем выполняет поиск du выходных строк, соответствующих '[0-9]G\>' такие, которые были бы получены из-за -h (--удобочитаемый) du опция - например

3.3G  /usr/lib
0
24.09.2017, 08:53
2 ответа

Используйте rename.

rename -nv 's/\.G1\./\.SH\./' *.G1.*

-nиспользуется для пробного запуска, как только вы увидите, что переименовывается, и если это правильно, удалите опцию n, чтобы иметь фактическое переименование.

2
28.01.2020, 02:24

Использование bashили любой другой оболочки, которая понимает подстановку шаблона${parameter/pattern/string}:

for name in./*.G1.*; do
    echo mv "$name" "${name/.G1./.SH.}"
done

Удалите echoпосле однократного запуска с ним (, чтобы убедиться, что он работает правильно ).

1
28.01.2020, 02:24

Теги

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