нет вилок:
ls | perl -lne '$suf=substr($_,6); rename $_, "XXXXX-$suf"'
Когда вы используете цикл оболочки, mv
вилки один раз для каждого файла. rename
Команда Perl не делает.
(Команда переименования Perl имеет некоторые ограничения, но в данном конкретном случае эти ограничения не применяются.)
Что касается rename
команды, показанной ранее, да, это работает, но тогда у вас есть вся эта путаница между двумя различными типами переименования и так далее. Если у вас есть правильный, отлично, но если нет, это тоже работает.
Если у вас нет команды perl-rename и вы не можете ее установить, вы можете просто сделать это:
ls | perl -lne '$old=$_; s/(\w+)/XXXXX/; rename $old, $_'
Как видите, здесь используется та же подстановка, что и в верхнем ответе. Конечно, Perl переименования есть и другие навороты (верхний ответ было сказано, -n
уже, то есть -0
, -f
и так далее), и тем более из них вам нужно, тем больше вы должны установить , что вместо того , чтобы добавить собственные таким образом , ,
rename
. Я предполагаю, что это Ларри Уоллrename
изrename
пакета Debian и производного (и IIRCprename
по системам убеждения RedHat). Очень полезный инструмент.