Renomeia um grande número de arquivos no terminal do ubuntu

0

Eu tenho alguns arquivos que foram escritos como: test_026542_time0663550.5.jpeg e gostaria de renomear como test_0663550.jpeg para classificar facilmente pelo número do pedido porque tenho alguns erros com os nomes atuais.

    
por user3601754 07.11.2015 / 16:45

2 respostas

0

Use a função rename . É básico (forma de protótipo) é $ rename s/"SEARCH"/"REPLACE"/g * . Isso substitui o arquivo "SEARCH" por "REPLACE". O /g significa global, portanto, se você tivesse um "SEARCH SEARCH.jpg", ele seria renomeado como "REPLACE REPLACE.jpg". O * é o tipo de extensão como .mp3 ou .pdf . Então, seu exemplo seria:

$ rename s/'test_026542_time0663550.5.jpeg'/'test_0663550_.jpeg'/g *

Isso deve ajudar.

    
por Tony Lancer 07.11.2015 / 16:50
0

Minha bateria está acabando, então farei isso curto

Encontrar + oneliner do awk

 find . -type f -printf "%f\n" |  awk -F "_" 
    '{ORIG=$0;gsub(/\_[[:digit:]].*\_time/,"_");gsub(/\.[[:digit:]].*\.jpeg/,".jpeg"); NEW=$0;cmd="mv "ORIG" 
    "NEW;system(cmd)}' 

Demo

testdir2:$ ls
test_13442_time1446925878.1.jpeg  test_27796_time1446925887.4.jpeg
test_25495_time1446925884.3.jpeg  test_29681_time1446925881.2.jpeg


testdir2:find . -type f -printf "%f\n" |  awk -F "_" 
'{ORIG=$0;gsub(/\_[[:digit:]].*\_time/,"_");gsub(/\.[[:digit:]].*\.jpeg/,".jpeg"); NEW=$0;cmd="mv "ORIG" 
"NEW;system(cmd)}' 

testdir2:$ ls
test_1446925878.jpeg  test_1446925881.jpeg  test_1446925884.jpeg  test_1446925887.jpeg
    
por Sergiy Kolodyazhnyy 07.11.2015 / 21:44