Apagar explicação da sintaxe do comando rename

2
Eu devo ser severamente obtuso, porque mesmo depois de ler o homem para renomear e toneladas de scripts de exemplo que outros deram em vários quadros de mensagens, eu ainda não consigo nem começar a entender o que a sintaxe para o comando renomear realmente significa.

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!

    
por Turp 04.05.2017 / 04:16

2 respostas

1

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}$//' *
    
por Joseph Sible 04.05.2017 / 04:40
0

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:

  • o sinalizador -n é usado para executar apenas o processamento a seco. Remova esse sinalizador se você quiser realmente executar a ação.
  • 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.
por Sergiy Kolodyazhnyy 04.05.2017 / 05:17