Renomeia múltiplos arquivos no terminal [duplicado]

5

Eu tenho 40 arquivos mp4 em uma pasta.

Todo arquivo começa com video_ . Todo arquivo é do formato video_*.mp4 .

Eu preciso renomear todos os arquivos com video_ removidos do começo de cada arquivo. Como posso fazer isso do terminal?

    
por kashish 22.09.2015 / 13:50

3 respostas

16

Você pode fazer isso por um comando terminal em um diretório onde esses arquivos estão localizados.

rename 's/^video_//' *.mp4

Isso significa selecionar todos os nomes de arquivos iniciados com video_ e substituir video_ por nada. Eu acho que s é para "substituto".

^ mostra o começo da string. Se você omitir ^ , a primeira ocorrência de video_ será removida, não importando onde ela esteja localizada na string. Mas no seu caso isso não importa realmente.

    
por Pilot6 22.09.2015 / 13:55
4
  • Usando rename ( prename ):

    rename -n 's/^video_//' video_*.mp4
    

    Se você estiver satisfeito com as alterações que serão feitas, remova -n para permitir que a operação realmente aconteça:

    rename 's/^video_//' video_*.mp4
    
  • Usando a expansão do parâmetro bash :

    for file in video_*.mp4; do mv -i "$file" "${file#video_}"; done
    
    • ${file#video_} é o padrão de expansão de parâmetro para remover video_ do início dos nomes dos arquivos.

    Ou

    for file in video_*.mp4; do mv -i "$file" "${file/video_/}"; done        
    
    • Este assume video_ vem apenas uma vez nos nomes dos arquivos

    • ${file/video_/} é um padrão de expansão do parâmetro bash que substituirá video_ dos nomes de arquivos por espaços em branco.

por heemayl 22.09.2015 / 13:58
3

Usando rename

rename 's/^video_//' *.mp4
    
por A.B. 22.09.2015 / 13:54