Renomeia a extensão de muitos arquivos

1

Gostaria de renomear a extensão .tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files para apenas .tar Eu tentei o comando

rename 's/\.tar?h=ocdist105&p=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files$/.tar/' *.tar?h=ocdist105&p=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files

mas parece não estar funcionando. Eu tenho 550 arquivos com essa extensão. Alguém pode me ajudar? Obrigado

    
por user253334 28.02.2014 / 17:19

3 respostas

0

cd para sua pasta e execute mmv '*.tar*' '#1.tar'

Se você não tiver o mmv instalado, execute sudo apt-get install mmv

    
por kubahaha 28.02.2014 / 18:45
2

Você pode conseguir isso usando find, exec e rename. Tenho certeza de que isso funcionará no Ubuntu sem precisar de nada especial.

#!/bin/bash

find /path/to/files -name "*.tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files" -exec rename .tar?h=ocdist105&=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files .tar {} \;

Isso não foi testado, mas deve funcionar. Aqui está o que o comando parece ao tentar renomear a extensão .css to .txt por exemplo; para maior clareza.

#!/bin/bash

find /path/to/files -name "*.css" -exec rename .css .txt {} \;

Para usar

Coloque o conteúdo acima em um arquivo. Dê as permissões executáveis do arquivo e execute-as.

TESTE

Você pode testar o comando acima para ver qual será o resultado sem realmente fazer alterações adicionando -n após o rename .

#!/bin/bash

find /path/to/files -name "*.css" -exec rename -n .css .txt {} \;
    
por Sajan Parikh 28.02.2014 / 17:27
0

O rename e o seu shell tratam algum caractere como especial. Você deve escapar deles corretamente.

Este comando deve fazer o trabalho:

rename 's/\.tar\?h\=ocdist105\&\=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files$/.tar/' *.tar\?h\=ocdist105\&\=%2Fdata1%2F4070d0f0f1d62757%2Frequested_files

Se você quiser saber como eu gerava esse comando, saiba que a conclusão de tabulação é um amigo útil ao lidar com esse tipo de problema.

    
por Andrea Corbellini 28.02.2014 / 18:44