sem garfos:
ls | perl -lne '$suf=substr($_,6); rename $_, "XXXXX-$suf"'
Quando você usa um loop de shell, os mv
garfos uma vez por arquivo. O rename
comando do Perl não.
(O comando renomear do Perl tem algumas restrições, mas nesse caso específico essas restrições não se aplicam.)
Quanto ao rename
comando mostrado anteriormente, sim, isso funciona, mas você tem toda essa confusão entre dois tipos diferentes de renomeação e assim por diante. Se você tem o caminho certo, ótimo, mas se não, isso também funciona.
Se você não possui o comando perl-rename e não pode instalá-lo, basta fazer o seguinte:
ls | perl -lne '$old=$_; s/(\w+)/XXXXX/; rename $old, $_'
Como você pode ver, isso usa a mesma substituição mostrada na resposta superior. Claro que o perl-renomeação tem outros sinos e assobios (a resposta superior mencionado, -n
já, então não há -0
, -f
e assim por diante), e quanto mais deles você precisa, quanto mais você deve instalar que em vez de rolar seus próprios dessa maneira .
rename
. Suponho que este seja o de Larry Wallrename
, dorename
pacote no Debian e derivado (e IIRCprename
em sistemas de persuasão do RedHat). Uma ferramenta muito útil.