Renomeia todos os arquivos em um diretório linux [duplicado]

1

Eu tenho uma lista de 1000 arquivos em um diretório no meu sistema Linux como este:

01-Star_Network.en.srt  
02-Subsets.en.srt  
03-Function_Comparision.en.srt

Eu quero eliminar o .en de todos os arquivos e renomeá-los para:

01-Star_Network.srt  
02-Subsets.srt  
03-Function_Comparision.srt

Existe algum script bash, python, java ou PHP para fazer isso?

    
por Sajad 20.11.2012 / 11:18

3 respostas

1

Use este comando:

rename 's/\.en\.srt$/.srt/' *.srt

rename é Perl rename , é o padrão em Ubuntu :

$ LANG=C update-alternatives --display rename
rename - auto mode
  link currently points to /usr/bin/prename
/usr/bin/prename - priority 60
  slave rename.1.gz: /usr/share/man/man1/prename.1.gz
Current 'best' version is '/usr/bin/prename'.

Ele é instalado com o pacote perl Ubuntu em si.

    
por 20.11.2012 / 11:19
1

O seguinte comando fará isso:

find . -name '*.en.srt' | sed 'h; s/.en.srt$/.srt/; H; x; s/\n/ /' | xargs -l mv
  • find encontra os arquivos a serem renomeados
  • sed edita o nome do arquivo
  • xargs chama o comando mv para cada nome de arquivo para fazer o trabalho

Para verificar primeiro o que você está fazendo, tente adicionar "echo" antes de mv, assim:

find . -name '*.en.srt' | sed 'h; s/.en.srt$/.srt/; H; x; s/\n/ /' | xargs -l echo mv
    
por 20.11.2012 / 11:27
0

rename de util-linux também deve fazer isso:

rename .en.srt .srt *.en.srt
    
por 20.11.2012 / 13:20

Tags