Cambiar el nombre de una gran cantidad de archivos en la terminal de Ubuntu

Cambiar el nombre de una gran cantidad de archivos en la terminal de Ubuntu

Tengo algunos archivos que fueron escritos como: test_026542_time0663550.5.jpegy me gustaría cambiarles el nombre test_0663550.jpegpara poder clasificarlos fácilmente por número de pedido porque tengo algunos errores con los nombres actuales.

Respuesta1

Utilice la renamefunción. Su forma básica (prototipo) es $ rename s/"SEARCH"/"REPLACE"/g *. Esto reemplaza el archivo "BUSCAR" con "REPLACE". Significa /gglobal, por lo que si tuviera un "SEARCH SEARCH.jpg", pasaría a llamarse "REPLACE REPLACE.jpg". Es *el tipo de extensión como .mp3o .pdf. Entonces, tu ejemplo sería:

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

Estedebería ayudar.

Respuesta2

Mi batería se está agotando, así que haré esto breve.

Buscar+awk oneliner

 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)}' 

Manifestación

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

información relacionada