mmv
é bom para tarefas como esta ex.
mmv -n -- '*.ext' '#1-bar.ext'
ou para qualquer extensão de ponto
mmv -n -- '*.*' '#1-bar.#2'
Remova o -n
quando estiver satisfeito por estar fazendo a coisa certa.
Eu tenho muitos arquivos como xyz_123_foo.ext
para os quais gostaria de adicionar -bar
aos nomes dos arquivos no final para resultar em xyz_123_foo-bar.ext
. Eu tentei:
rename . -bar. xyz_*
que resultou em:
rename: invalid option -- 'b'
seguido pelo texto de uso. Eu tentei variações com '-bar'
e "-bar"
sem sucesso.
Como posso obter rename
para aceitar -
como parte da string de substituição?
Ou outro comando seria mais eficiente ou apropriado?
Meu shell é bash e estou usando o rename
de util-linux
no SuSe Linux SLE12.
Assumindo que seu rename
é a variante Perl do utilitário rename
:
rename 's/$/-bak/' xyz_*
Isso usa uma expressão Perl que simplesmente insere -bak
no final de todos os nomes de arquivos fornecidos por meio de uma substituição de $
(a âncora "fim de linha").
Você também pode usar
rename '$_ .= "-bak"' xyz_*
que usa outra expressão Perl que acrescenta a string -bak
a $_
(a "coisa atual" em Perl, aqui está um nome de arquivo).
Para uma solução de loop de shell:
for name in xyz_*; do
mv -i "$name" "$name-bak"
done
Supondo que estamos falando sobre a extensão PERL, rename
(e não o rename
de util-linux
) ...
rename 's/.ext/-bar.ext/' xyz_123_foo.ext
O resultado altera o nome do arquivo para xyz_123_foo-bar.ext
.
A parte entre aspas simples é uma expressão regular PERL. O s
substitui .ext
no nome do arquivo por -bar.ext
. Pode-se combinar isso com find
, supondo que esses arquivos estejam em seu diretório pessoal ( ~
).
find ~ -type f -name '*.ext' -exec rename 's/.ext/-bar.ext/' {} +