O primeiro parâmetro é um snippet Perl que transforma o nome antigo (em $_
) em um novo, e o restante dos parâmetros são os arquivos para operar. No seu caso, você faria isso:
rename 's/-.{12}$//' *
Estou tentando aprender comandos bash e percebo o quanto é perigoso simplesmente copiar & amp; executar comandos da Internet sem realmente entender o que e mais importante porque eles "fazem o que fazem". Então, alguém pode me ajudar a entender o que significam os termos do comando rename, para que eu possa criar meu próprio & amp; comando preciso?
Para detalhes, eu fiz o download de mais de 40 vídeos do youtube no mesmo diretório, e todos terminam em -fgrhegrvbfv
(cada um tem caracteres totalmente aleatórios após o -). Eu simplesmente desejo remover o - e os 12 caracteres depois em cada nome de arquivo. Muito obrigado!
O primeiro parâmetro é um snippet Perl que transforma o nome antigo (em $_
) em um novo, e o restante dos parâmetros são os arquivos para operar. No seu caso, você faria isso:
rename 's/-.{12}$//' *
Aqui está uma maneira de fazer isso:
$ ls
file2-fdsa file-asdf
$ prename -nv 's/(.*)-(.*)//' *-*
file-asdf renamed as file
file2-fdsa renamed as file2
A maneira como isso funciona é que temos dois "grupos" de caracteres correspondentes. Então, primeiro (.*)
será o que quer que seja antes de -
e segundo (.*)
será o que for depois de -
. Podemos nos referir a eles via para o grupo 1 e
para o grupo 2 (que não é usado).
O *-*
diz ao shell para pegar todos os arquivos com -
, e passá-los como argumentos para o comando rename
. Essa parte não tem nada a ver com rename
em si, mas com o shell. Isso apenas torna nossa vida um pouco mais fácil.
Agora, o comando inteiro pode ser lido: "Pegue todos os arquivos que possuem -
e, para cada nome de arquivo, divida-o em dois grupos e renomeie esse arquivo apenas para o que está no primeiro grupo".
Observe algumas coisas:
-n
é usado para executar apenas o processamento a seco. Remova esse sinalizador se você quiser realmente executar a ação. -v
flag é usado para obter uma saída detalhada do que o prename
está realmente fazendo prename
é o mesmo que rename
. Há apenas uma confusão com os pacotes da Debian e o que está sendo mantido. Consulte este para obter mais informações. Observe que alguns shells como ksh
possuem seu próprio comando rename
integrado, que funciona de maneira diferente da renomeação do perl.