mover cadeia de nomes de arquivos com sed ou renomeá-los com renomear

0

Eu tenho um monte de arquivos de vídeo em uma pasta, que tem um sufixo duplo avi.avi.

find /home/alex/Filme/  -type f -name '*.avi.avi' 
/home/alex/Filme/Super 8.avi.avi
/home/alex/Filme/Exit - A Night From Hell.avi.avi
/home/alex/Filme/Der Plan.avi.avi
/home/alex/Filme/Ich.bin.Nummer.4.2011.avi.avi
snipp

Eu tento remover a string dupla com o seguinte "Script"

 #!/bin/bash
    for i in 'find $HOME/Filme -type f -name '*avi.avi' -print0' 

    do 
        sed -e 's/'*.avi.avi'/'*.avi'/g'
 done

Ou a melhor maneira de conseguir isso é renomear, assim?

find $HOME/Filme -type f -name '*avi.avi' -print0 -exec  sh -c rename -v 's/*.avi.avi/*.avi/g' {} \;

Não tenho certeza se o nome da pasta será preservado. Sim, encontrei várias perguntas e respostas para isso, mas tenho problemas para adaptá-lo ao meu caso.

exemplo para a pergunta

Uma das minhas abordagens funciona?

    
por Bhavya Jain 14.07.2017 / 11:58

3 respostas

1

Você estava quase lá.

find $HOME/Filme -type f -name '*avi.avi' -exec \
  sh -c "rename -v 's/\.avi\.avi$/.avi/'" {} \;

(O argumento para rename é uma substituição de expressão regular; e a opção /g só seria útil se você quisesse substituir todas as ocorrências em um nome de arquivo correspondente; mas, por definição, só pode haver uma correspondência em o fim.)

Talvez mais útil você possa agrupar isso e talvez usar apenas mv para melhorar a portabilidade.

find $HOME/Filme -type f -name '*avi.avi' -exec \
  sh -c 'for f; do mv -v "$f" "${f%.avi}"; done' _ {} +

Se não houver necessidade de percorrer subdiretórios,

for f in $HOME/Filme/*.avi.avi; do
    mv -v "$f" "${f%.avi}"
done
    
por 14.07.2017 / 12:20
1

Com o comando simples renomear ( Perl ):

rename 's/(.*\.avi)\.avi$/$1/' /home/alex/Filme/*.avi.avi

Ou apenas removendo a última seção .avi :

rename 's/\.avi$//' /home/alex/Filme/*.avi.avi
    
por 14.07.2017 / 12:10
-2

Eu uso este código para renomear tais arquivos

rename -v "s/\.avi$//g" *
    
por 14.07.2017 / 13:16

Tags